2006-12-31  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30137
	* fold-const.c (fold_comparison): Fold comparison of addresses
	of components.

2006-12-31  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/30322
	* fold-const.c (fold_binary): Fold X + ~X and ~X + X into -1 when
	we don't care about trapping overflow.  Only convert -A - 1 into ~A
	when we don't care about trapping overflow.

2006-12-31  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30338
	* fold-const.c (fold_binary): Fix type-mismatch in folding
	of -1 - A to ~A.

2006-12-30  Kazu Hirata  <kazu@codesourcery.com>

	* tree-inline.c: Fix a comment typo.

2006-12-30  Jan Hubicka  <jh@suse.cz>

	* ipa-pure-const.c (check_operand): SSA_NAME is safe.
	* ipa-type-escape.c (scan_for_refs): Look into SSA_NAMEs.

2006-12-30  Jan Hubicka  <jh@suse.cz>

	* tree.h (DECL_CALL_CLOBBERED): Remove.
	(tree_decl_common): Remove call_clobbered flag.
	* tree-flow.h (struct var_ann_d): Add call_clobbered flag.
	* tree-ssa-alias.c (mark_non_addressable, reset_cc_flags): Update.
	* tree-flow-inline.h (is_call_clobbered, mark_call_clobbered,
	clear_call_clobbered): Update.
	* tree-ssa.c (verify_call_clobbering): Update.

2006-12-30  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-alias.c (create_structure_vars): When in SSA, update operand
	caches.
	* tree-ssa-operands.c (build_ssa_operands): Recompute addresses_taken
	bitmap.

2006-12-30  Jan Hubicka  <jh@suse.cz>
	    Vladimir Yanovsky <volodyan@gmail.com>

	* emit-rt.c (emit_copy_of_insn_after): Fix bug causing exponential
	amount of copies of INSN_NOTEs list.

2006-12-29  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_expand_queue): Rename to...
	(cgraph_new_nodes): ... this one.
	(cgraph_state): New global variable.
	(cgraph_add_new_function): Work in more cases.
	* cgraph.h (cgraph_expand_queue): Rename to ...
	(cgraph_new_nodes): ... this one.
	(cgraph_state): New enum and static variable.
	(cgraph_add_new_function): Update prototype.
	(cgraph_process_new_functions): New.
	* omp-low.c (expand_omp_parallel): Update.
	* cgraphunit.c (initialize_inline_failed): Declare early.
	(cgraph_process_new_functions): New function.
	(cgraph_assemble_pending_functions): Use it.
	(cgraph_expand_all_functions): Use it.
	(cgraph_optimize): Use it; set cgraph_state.
	* passes.c (execute_one_pass, execute_ipa_pass_list): Process new
	functions

2006-12-29  Kazu Hirata  <kazu@codesourcery.com>

	* tree-cfg.c (last_stmt_ptr): Remove.
	* tree-flow.h: Remove the prototype for last_stmt_ptr.

	* config/i386/i386.h (NON_QI_REG_P): Remove.
	* config/i386/predicates.md (non_q_regs_operand): Remove.

2006-12-29  Ian Lance Taylor  <iant@google.com>

	* c-common.c (c_define_builtins): New static function broken out
	of c_common_nodes_and_builtins.
	(c_common_nodes_and_builtins): Call c_define_builtins unless only
	doing preprocessing.

2006-12-29  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (remap_ssa_name): New function.
	(remap_decl): Update SSA datastructures for DECLs.
	(copy_body_r): Deal with SSA_NAMEs; add referenced global vars.
	(copy_bb): Set SSA_NAME def stmts.
	(update_ssa_acorss_eh_edges): New function.
	(copy_edge_for_bb): Call it; mark new vars for renaming.
	(copy_phis_for_bb): New function.
	(initialize_cfun): Break out from ...
	(copy_cfg_body): ... here; maintain AUX map for both directions;
	call SSA updating workers; do not produce copy of cfun to be copied.
	(setup_one_parameter): Do propagation across SSA form.
	(declare_return_variable): Work on SSA; use return_slot instead of
	address of return slot of argument to avoid folding back and forth.
	(expand_call_inline): Update SSA from on return values.
	(optimize_inline_calls): Do sanity checking, dead blocks removal,
	update SSA form.
	(tree_function_verioning): Update initialize_cfun.

2006-12-29  Marcin Dalecki  <martin@dalecki.de>

	* doc/invoke.texi: Replace no longer supported -fno-strength-reduce
	with -fmerge-constants in sample code.

2006-12-28  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (OBJS-common): Remove conflict.o
	(conflict.o): Remove.
	* basic-block.h: Remove the prototypes for conflict.c.
	* conflict.c: Remove.

2006-12-27  Daniel Berlin  <dberlin@dberlin.org>

	* sbitmap.c (BITMAP_DEBUGGING): New macro.
	(do_popcount): Ditto.
	(sbitmap_verify_popcount): New function.
	(sbitmap_alloc): Set popcount to NULL, remove set of bytes
	member.
	(sbitmap_alloc_with_popcount): New function.
	(sbitmap_resize): Remove uses of bytes member and update
	popcount.
	(sbitmap_realloc): Remove uses of bytes member.
	(sbitmap_copy): Copy popcount.
	(sbitmap_copy_n): New function.
	(sbitmap_zero): Update popcount cache.
	(sbitmap_ones): Ditto.
	(sbitmap_a_and_b): Ditto.
	(sbitmap_a_or_b): Ditto.
	(sbitmap_a_xor_b): Ditto.
	(sbitmap_union_of_diff_cg): Assert non-existence of popcount
	cache.
	(sbitmap_union_of_diff): Ditto.
	(sbitmap_not): Ditto.
	(sbitmap_difference): Ditto.
	(sbitmap_a_and_b_cg): Ditto.
	(sbitmap_a_xor_b_cg): Ditto.
	(sbitmap_a_or_b_cg): Ditto.
	(sbitmap_a_or_b_and_c_cg): Ditto.
	(sbitmap_a_and_b_or_c_cg): Ditto.
	(sbitmap_intersection_of_succs): Ditto.
	(sbitmap_intersection_of_preds): Ditto.
	(sbitmap_union_of_succs): Ditto.
	(sbitmap_union_of_preds): Ditto.
	(popcount_table): New.
	(sbitmap_elt_popcount): New function.
	(sbitmap_popcount): Ditto.

	* sbitmap.h (sbitmap): Remove bytes member.
	Add popcount member.
	(SET_BIT): Macro turned into function.
	(RESET_BIT): Ditto.
	(SBITMAP_SIZE_BYTES): New macro.
	(sbitmap_free): Free popcount too.
	(sbitmap_alloc_with_popcount): New prototype.
	(sbitmap_copy_n): Ditto.
	(sbitmap_verify_popcount): Ditto.

2006-12-27  Ian Lance Taylor  <iant@google.com>

	PR debug/26964
	* dwarf2out.c (gen_type_die): Don't write out a DIE for
	ENUMERAL_TYPE if it was already written out.

2006-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3,
	do_mpfr_sincos): Ensure target base equals two.

2006-12-26  Kazu Hirata  <kazu@codesourcery.com>

	* tree-ssa-operands.c: Fix a comment typo.

2006-12-25  Kazu Hirata  <kazu@codesourcery.com>

	* tree-vectorizer.h (VECT_SMODULO): Remove.

2006-12-24  Andreas Tobler  <a.tobler@schweiz.org>

	* config/pa/pa.c: Remove heap vector type defines.

2006-12-24  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-operands.h (struct ssa_operand_memory_d):
	add ssa_operand_mem_size.
	* tree-ssa-operands.c (operands_bitmap_obstack): New.
	(ssa_operand_mem_size): Remove.
	(init_ssa_operands): Initialize obstack; use it.
	(fini_ssa_operands): Release obstack.
	(ssa_operand_alloc): Update.
	(finalize_ssa_vdefs, finalize_ssa_vuse_ops, copy_virtual_operands,
	get_mpt_for): Use obstack.
	* tree-ssa.c (delete_tree_ssa): Call fini_ssa_operands.
	* tree-outof-ssa.c: (remove_ssa_form): Don't call it here.

2006-12-24  Jan Hubicka  <jh@suse.cz>

	* tree-mudflap.c (ml_decl_cache_locals, md_build_check_statement_for):
	add newly referenced vars.

2006-12-24  Kazu Hirata  <kazu@codesourcery.com>

	* basic-block.h: Remove the prototype for
	expected_value_to_br_prob.
	* rtl.h: Remove the prototypes for expand_builtin_expect_jump
	and purge_line_number_notes.

2006-12-23  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne,
	assert_no_overflow_lt, assert_loop_rolls_lt,
	number_of_iterations_lt, number_of_iterations_le,
	number_of_iterations_cond, number_of_iterations_exit):
	Use integer_zerop/integer_nonzerop instead of
	null_or_integer_zerop/nonnull_and_integer_nonzerop.
	* tree.h (null_or_integer_zerop, nonnull_and_integer_nonzerop):
	Removed.
	* tree-scalar-evolution.c (simple_iv): Return zero for step of
	an invariant.
	* tree-ssa-loop-ivopts.c (alloc_iv): Do not set step of invariants
	to zero.
	(get_iv): Return NULL for non-scalar types.  Use zero as a step
	of an invariant.
	(determine_biv_step, find_interesting_uses_op,
	find_interesting_uses_cond, find_interesting_uses_stmt,
	add_old_ivs_candidates, determine_use_iv_cost_condition,
	rewrite_use_compare, remove_unused_ivs):
	Use integer_zerop instead of null_or_integer_zerop.
	(struct ifs_ivopts_data): Replace step_p field with step field.
	(idx_find_step): Use zero as a step of an invariant.  Modify
	step instead of *step_p.
	(find_interesting_uses_address): Use zero as a step of an invariant.
	Use integer_zerop instead of null_or_integer_zerop.
	(find_interesting_uses_outside): Call find_interesting_uses_op only
	for phi nodes for real operands.
	(add_candidate_1): Expect step to be non-NULL.
	* tree-ssa-loop-prefetch.c (idx_analyze_ref): Expect step to be
	non-NULL.

2006-12-23  Andrew Pinski  <pinskia@gmail.com>

	* vec.c: Don't include tree.h.
	* Makefile.in (vec.o): Update dependencies.
	(build/vec.o): Likewise.

2006-12-23  Kazu Hirata  <kazu@codesourcery.com>

	* common.opt (flag_force_mem): Remove.
	* doc/invoke.texi (-fforce-mem): Remove.
	* opts.c (common_handle_option): Don't handle OPT_fforce_mem.

	* Makefile.in (final.o): Depend on vecprim.h.
	* final.c: Include vecprim.h.
	(insn_addresses_): Change the type to VEC(int,heap)*.
	* insn-addr.h (INSN_ADDRESSES_DEFN): Remove.
	(INSN_ADDRESSES, INSN_ADDRESSES_ALLOC, INSN_ADDRESSES_SIZE,
	INSN_ADDRESSES_NEW): Use VEC instead of VARRAY.

2006-12-23  Marcin Dalecki  <martin@dalecki.de>

	* cgraphunit.c (cgraph_optimize): Fixed obvious thinko in memory
	consumption reporting.

2006-12-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* c.opt (Wmissing-parameter-type): New.
	* doc/invoke.texi (Wmissing-parameter-type): Document it.
	(Wextra): Enabled by -Wextra.
	* c-opts.c (c_common_post_options): Enabled by -Wextra.
	* c-decl.c (store_parm_decls_oldstyle): Replace Wextra with
	Wmissing-parameter-type.

2006-12-23  Eric Botcazou  <ebotcazou@adacore.com>

	* dwarf2out.c (dbx_reg_number): Do leaf register remapping
	only if the function is leaf.
	(multiple_reg_loc_descriptor): Likewise.

2006-12-23  Kazu Hirata  <kazu@codesourcery.com>

	* rtl.h (NOTE_EXPECTED_VALUE): Remove.

2006-12-23  Jan Hubicka  <jh@suse.cz>

	* toplev.c (dump_memory_report): Break out from...
	(finalize): Here.
	* toplev.h (dump_memory_report): Declare.
	(cmp_statistic): Rename to ...
	(final_cmp_statistic): ... this one
	(cmp_statistic): New.
	(dump_ggc_loc_staitsitcs): New FINAL parpameter.
	* common.opt (-fpre-ipa-mem-report, -fpost-ipa-mem-report): Declare.
	* varray.c (dump_varray_staitiscs): Do not segfault when no varray was
	allocated so far.
	* cgraphunit.c (cgraph_optimize): Dump the memory reports.

2006-12-22  Mike Stump  <mrs@apple.com>

	* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Add
	-mmacosx-version-min=10.4.
	(crt2.o): Add $(DARWIN_EXTRA_CRT_BUILD_CFLAGS).

2006-12-23  Jan Hubicka  <jh@suse.cz>

	* tree-flow-inline.h (var_ann): External variable annotations are
	unshared too.
	(tree_common_ann): Handle correctly unshared variables annotations.
	* tree-dfa.c (create_var_ann): External variable annotations are
	unshared too.

2006-12-22  Kazu Hirata  <kazu@codesourcery.com>

	* basic-block.h: Remove the prototype for
	commit_edge_insertions_watch_calls.
 	* cfgrtl.c (commit_edge_insertion): Drop the last argument.
	Simplify.
	(commit_edge_insertions_watch_calls): Remove.
	(commit_edge_insertions): Adjust the call to
	commit_one_edge_insertion.

2006-12-22  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (zero_p, nonzero_p): Removed.
	(number_of_iterations_ne, number_of_iterations_lt_to_ne,
	assert_no_overflow_lt, assert_loop_rolls_lt,
	number_of_iterations_lt, number_of_iterations_le,
	number_of_iterations_cond, tree_simplify_using_condition_1,
	number_of_iterations_exit, find_loop_niter, loop_niter_by_eval,
	implies_nonnegative_p, implies_ge_p, record_nonwrapping_iv,
	idx_infer_loop_bounds, n_of_executions_at_most, scev_probably_wraps_p):
	Do not use zero_p/nonzero_p.
	* tree-ssa-loop-manip.c (determine_exit_conditions): Ditto.
	* tree-ssa-loop-ivopts.c (niter_for_exit, determine_biv_step,
	find_interesting_uses_op, find_interesting_uses_cond,
	find_interesting_uses_address, find_interesting_uses_stmt,
	strip_offset_1, add_candidate_1, add_old_ivs_candidates,
	difference_cost, determine_use_iv_cost_condition,
	rewrite_use_compare, remove_unused_ivs): Ditto.
	* tree-ssa-address.c (tree_mem_ref_addr, create_mem_ref_raw): Ditto.
	* tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
	* tree-cfg.c (find_taken_edge_cond_expr): Ditto.
	* tree.h (zero_p): Declaration removed.
	(null_or_integer_zerop, nonnull_and_integer_nonzerop): New.

2006-12-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* c.opt (Wclobbered): New.
	* doc/invoke.texi (Wclobbered): Document it.
	(Wextra): Enabled by -Wextra.
	* c-opts.c (c_common_post_options): Enabled by -Wextra.
	* flow.c (rest_of_handle_life): Replace Wextra with Wclobbered.
	* function.c (setjmp_vars_warning): Only warn for Wclobbered.
	(setjmp_args_warning): Likewise.

2006-12-22  Kazu Hirata  <kazu@codesourcery.com>

	* config/elfos.h, config/spu/spu.c, tree-ssa-operands.h,
	tree-ssa-ter.c: Fix comment typos.

2006-12-22  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/29840

	* fwprop.c (forward_propagate_into): Reject artificial uses/defs.
	(fwprop_init): Add DF_HARD_REGS to df_init call.

2006-12-21  Andrew Pinski  <pinskia@gmail.com>

	* tree-nested.c (create_tmp_var_for): Check for vector type
	when setting DECL_GIMPLE_REG_P.

2006-12-21  Roger Sayle  <roger@eyesopen.com>

	* tree-pretty-print.c (dump_generic_node): Avoid outputing "(void) 0;"
	as the else branch of a COND_EXPR.

2006-12-22  Kazu Hirata  <kazu@codesourcery.com>

	* cgraphunit.c, config/i386/i386.c, config/ia64/ia64.c, cse.c,
	output.h, toplev.c, tree-affine.h, tree-flow.h,
	tree-ssa-alias.c, tree-ssa-coalesce.c, tree-ssa-live.c,
	tree-ssa-live.h, tree-ssa-operands.c, tree-ssa-ter.c,
	tree-vrp.c, varpool.c: Fix comment typos.

	* cgraphunit.c, varpool.c: Fix comment typos.

2006-12-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Define.
	* config/spu/spu.c (spu_expand_prologue): Set RTX_FRAME_RELATED_P
	for insn setting up the frame pointer.  Do not set it for insns
	setting up scratch registers or storing the backchain.

2006-12-21  Eric Botcazou  <ebotcazou@adacore.com>

	PR other/29639
	* configure.ac (HAVE_LD_EH_GC_SECTIONS): Check that exception tables
	are kept for .gnu.linkonce.t sections if COMDAT groups are disabled.
	* configure: Regenerate.

2006-12-21  Joseph Myers  <joseph@codesourcery.com>

	* rtlanal.c (subreg_get_info): Do not make register size
	computations for mode sizes not divisible by the number of
	registers.

2006-12-21  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (build_constraint_graph): Insert complex
	offsetted constraints into rhsvar, not lhsvar.

2006-12-21  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/30262
	PR middle-end/30263
	* tree-nested.c (walk_asm_expr): New function.
	(walk_stmts): Use it for ASM_EXPR.

	PR target/30230
	* config/ia64/ia64.c (ia64_add_bundle_selector_before): New function.
	(bundling): Use it.

2006-12-21  Nathan Sidwell  <nathan@codesourcery.com>

	PR target/28966
	PR target/29248
	* reload1.c (reload): Realign stack after it changes size.

2006-12-20  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_subreg): Use the correct mode when
	determining whether a SUBREG of a CONCAT refers to the first or
	second component.

2006-12-21  Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.c (spu_builtin_mul_widen_even): Remove unused
	local variable `d'.

2006-12-20  Jan Hubicka  <jh@suse.cz>

	* tree-dfa.c (add_referenced_var): Walk initializers of
	non-constant/readonly static vars.

2006-12-20  Jan Hubicka  <jh@suse.cz>

	* tree-flow-inline.h (gimple_var_anns): New function.
	(var_ann): Use hashtable for static functions.
	* tree-dfa.c (create_var_ann): Likewise.
	* tree-ssa.c (var_ann_eq, var_ann_hash): New functions.
	(init_tree_ssa): Initialize var anns.
	(delete_tree_ssa): Delete var anns; also clear out gimple_df.
	* tree-flow.h (struct static_var_ann_d): New structure.
	(gimple_df): Add var_anns.

2006-12-20  Carlos O'Donell  <carlos@codesourcery.com>

	PR bootstrap/30242
	* gcc/c-incpath.c (add_standard_paths): Only relocate paths that
	begin with the configured prefix.

2006-12-20  Jan Hubicka  <jh@suse.cz>

	PR target/30213
	* i386.c (expand_setmem_epilogue): Fix formating.
	(dsmalest_pow2_greater_than): New function.
	(ix86_expand_movmem): Improve comments; avoid re-computing of
	epilogue size.
	(promote_duplicated_reg_to_size): Break out from ...
	(expand_setmem): ... this one; reorganize promotion code;
	improve comments; avoid recomputation of epilogue size.

2006-12-20  Andrew Pinski  <pinskia@gmail.com>

	PR middle-end/30143
	* omp-low.c (init_tmp_var): New function.
	(save_tmp_var): New function.
	(lower_omp_1): Use them for VAR_DECL.

2006-12-20  Andrew Pinski  <pinskia@gmail.com>

	* tree-gimple.c (is_gimple_min_invariant): Treat constant vector
	CONSTRUCTORs as min invariants.

2006-12-20  Joseph Myers  <joseph@codesourcery.com>

	* rtlanal.c (struct subreg_info, subreg_get_info, subreg_nregs):
	New.
	(subreg_regno_offset, subreg_offset_representable_p): Change to
	wrappers about subreg_get_info.
	(refers_to_regno_p, reg_overlap_mentioned_p): Use subreg_nregs.
	* rtl.h (subreg_nregs): Declare.
	* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING): Update to refer to
	subreg_get_info.
	* caller-save.c (mark_set_regs, add_stored_regs): Use
	subreg_nregs.
	* df-scan.c (df_ref_record): Use subreg_nregs.
	* flow.c (mark_set_1): Use subreg_nregs.
	* postreload.c (move2add_note_store): Use subreg_nregs.
	* reload.c (decompose, refers_to_regno_for_reload_p,
	reg_overlap_mentioned_for_reload_p): Use subreg_nregs.
	* resource.c (update_live_status, mark_referenced_resources,
	mark_set_resources): Use subreg_nregs.

2006-12-20  Zdenek Dvorak <dvorakz@suse.cz>

	* loop-unswitch.c (unswitch_loop): Update arguments of
	duplicate_loop_to_header_edge call.
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Ditto.
	* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
	unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
	Ditto.
	* cfgloopmanip.c (loop_version): Ditto.
	(duplicate_loop_to_header_edge): Change
	type of to_remove to VEC(edge), remove n_to_remove argument.
	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
	Change type of to_remove to VEC(edge), remove n_to_remove argument.
	(tree_unroll_loop): Update arguments of
	tree_duplicate_loop_to_header_edge call.
	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge):
	Change type of to_remove to VEC(edge), remove n_to_remove argument.
	* cfghooks.h (struct cfg_hooks): Type of
	cfg_hook_duplicate_loop_to_header_edge changed.
	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
	* cfgloop.h (duplicate_loop_to_header_edge): Ditto.
	* tree-flow.h (tree_duplicate_loop_to_header_edge): Ditto.

2006-12-20  Dorit Nuzman  <dorit@il.ibm.com>

	* config/spu/spu.md (vec_widen_umult_hi_v8hi): New.
	(vec_widen_umult_lo_v8hi, vec_widen_smult_hi_v8hi): New.
	(vec_widen_smult_lo_v8hi): New.
	* config/spu/spu.c (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Defined.
	(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Defined.
	(spu_builtin_mul_widen_even, spu_builtin_mul_widen_odd): New.

2006-12-20  Jan Hubicka  <jh@suse.cz>

	* cgraph.c: Update overall comment; fix vertical spacing.
	* ipa-inline.c (cgraph_decide_inlining): Remove now redundant check.

2006-12-20  Jan Hubicka  <jh@suse.cz>

	* cgraph.h (FOR_EACH_STATIC_VARIABLE, FOR_EACH_STATIC_INITIALIZER): New
	macros.
	(varpool_first_static_initializer, varpol_next_static_initializer): New
	inline functions.
	* ipa-reference.c (analyze_variable): Simplify.
	(static_execute): Use FOR_EACH_STATIC_INITIALIZER.
	* ipa-type-escape.c (type_escape_execute): Use FOR_EACH_STATIC_VARIABLE.

2006-12-19  Andrew Pinski  <pinskia@gmail.com>

	PR tree-opt/30045
	* tree-vrp.c (nonnull_arg_p): Treat the static decl as always
	non null.

2006-12-20  Ben Elliston  <bje@au.ibm.com>

	* doc/invoke.texi (Optimize Options): Typo fix.

2006-12-19  Eric Christopher  <echristo@apple.com>

	* config/darwin.c (machopic_select_section): Rewrite.
	(darwin_text_section): New.
	(darwin_rodata_section): Ditto.
	(darwin_mergeable_string_section): Ditto.
	(darwin_mergeable_constant_section): Ditto.
	* config/darwin-sections.def: Add SECTION_STRINGS for cstring_section.

2006-12-19  Steve Ellcey  <sje@cup.hp.com>

	* config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL):  Add undef.

2006-12-19  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/29544
	* gcc/Makefile.in (STAGE1_CHECKING): Rename to...
	(STAGE1_CHECKING_CFLAGS): ... this.

2006-12-18  Andrew Pinski  <pinskia@gmail.com>

	PR target/29779
	* config/rs6000/rs6000.c (altivec_init_builtins): Change to set
	READONLY on __builtin_altivec_mask_for_load instead of adding
	the attribute.

2006-12-18  Roger Sayle  <roger@eyesopen.com>
	    Eric Christopher  <echristo@apple.com>

	PR target/29302
	* real.c (real_maxval): Correctly handle IBM extended double format.

2006-12-19  Jan Hubicka  <jh@suse.cz>

	* expmed.c (expand_mult_const): Force operand to constant.
	* rs6000.c (rs6000_emit_set_const, rs6000_emit_set_long_const): Add
	copy_rtx to arguments.

2006-12-19  Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2006-12-19  Ben Elliston  <bje@au.ibm.com>

	* cse.c (cse_insn): Fix formatting.

2006-12-18  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (Debugging Options): Document -g0.
	* config/darwin.h (LINK_COMMAND_SPEC): Replace -gnone with -g0.
	* config/darwin9.h (LINK_COMMAND_SPEC): Likewise.

2006-12-18  Ian Lance Taylor  <iant@google.com>

	* c.opt (Wmissing-declarations): Add C++ and ObjC++.
	* doc/invoke.texi (Warning Options): -Wmissing-declarations now
	works for C++.

2006-12-18  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-operands.h (struct vdef_optype_d): Rename to voptype_d.
	(struct vuse_optype_d): Delete.
	(SSA_OPERAND_MEMORY_SIZE): Delete.
	(struct ssa_operand_memory_d): Change mem array to size one.
	(NUM_VOP_FREE_BUCKETS): Define.
	(free_vuses, free_vdefs): Replace with vop_free_buckets array.
	(vdef_ops, vuse_ops, struct ssa_operand_iterator_d): Use voptype_d type.
	* tree-pretty-print.c (dump_vops): Use voptype_d type.
	* tree-ssa-operands.c (vop_free_bucket_size): New.  Number of operands
	which fit into a chunk of memory from a specific bucket.
	(vop_free_bucket_index): New.  Find correct size memory bucket.
	(init_vop_buckets): New.  Initialize VOP free memory buckets.
	(add_vop_to_freelist): New.  Add a VOP to the correct free list.
	(ssa_operand_mem_size): New.  Current size of an operand memory chunk.
	(init_ssa_operands): Initialize operand memory and free lists.
	(fini_ssa_operands): Remove references to free_vuses and free_vdefs.
	(ssa_operand_alloc): Use graduated size memory allocation.
	(APPEND_OP_AFTER, MOVE_HEAD_AFTER, MOVE_HEAD_TO_FREELIST,
	INITIALIZE_USE): Remove.
	(alloc_vop): New.  Allocate a virtual operand.
	(alloc_vdef, alloc_vuse): Delete.
	(add_def_op, add_use_op): Directly setup pointers.
	(add_vop): New.  Add a virtual operand.
	(add_vuse_op, add_vdef_op): Call add_vop.
	(realloc_vop): New.  Reallocate a virtual operand.
	(realloc_vdef, realloc_vuse): Call realloc_vop.
	(finalize_ssa_def_ops): Delete.  Move content to finalize_ssa_defs.
	(finalize_ssa_defs): Optimize for common case, remove code based on
	sorted pointers which was a waste of time.
	(finalize_ssa_use_ops): Delete.  Move content to finalize_ssa_uses.
	(finalize_ssa_uses): Update last pointer.
	(finalize_ssa_vdef_ops): Delete.  Move content to finalize_ssa_vdefs.
	(finalize_ssa_vdefs, finalize_ssa_vuse_ops): Use voptype_d and
	directly manipulate pointers.
	(copy_virtual_operands): Use voptype_d, and no need to update pointers.

2006-12-18  Nathan Sidwell  <nathan@codesourcery.com>

	* config/rs6000/rs6000.md (*movdf_hardfloat32): Use %X format to
	determine if memory operand is an indexed address or not.

2006-12-17  Steven Bosscher  <steven@gcc.gnu.org>

	* cselib.c (struct cselib_val_struct): Make val_rtx its
	own field, remove the union that contained it.
	* cselib.c: Update accordingly where necessary.

2006-12-17  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (have_eh_succ_edges): New function.
	(cse_insn): Don't remove dead EH edges here
	(cse_extended_basic_block): Do it here.
	(rest_of_handle_cse, rest_of_handle_cse2): Don't assert
	that we have removed all dead edges.

2006-12-17  Matthias Klose  <doko@debian.org>

	PR libstdc++/11953
	* gcc/config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend.

2006-12-17  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING.
	(cse_extended_basic_block): When truncating a path while processing
	it, make sure to clear the visited bit on the basic blocks in the
	truncated part of the path.
	(cse_main): Use reverse completion order, not DFS order, to walk
	the CFG.
	(gate_handle_cse): Revert erroneous commit of a counter.

2006-12-17  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (this_insn_cc0, this_insn_cc0_mode): New global
	variables, moved out from cse_insn.
	(prev_insn): Remove this global variable).
	(new_basic_block): Don't set it.
	(cse_insn): Idem. Also, move code to delete unused CC0-setter
	insns and code to set prev_insn_cc0 and prev_insn_cc0_mode
	from here...
	(cse_extended_basic_block): ...to here.  Do not clear
	prev_insn_cc0 until after recording equivalences from jumps.

2006-12-16  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (ipa_passes): Clear current_function_decl.

2006-12-16  Andreas Tobler  <a.tobler@schweiz.org>

	* passes.c (verify_curr_properties): Define only for ENABLE_CHECKING.

2006-12-16  Jan Hubicka  <jh@suse.cz>

	* omp-low.c (expand_omp_parallel): Set function properties.
	* function.h (struct function): Add curr_properties and last_verified.
	* passes.c (register_dump_files): Do not set TODO_set_props for the
	first pass
	(init_optimization_passes): Set it here; reorder initialization so the
	dump files appear in more logical order.
	(last_verified, curr_properties): Kill.
	(do_per_function): New function.
	(execute_function_todo): Break out from ...
	(execute_todo): ... here; handle per-function flags.
	(clear_last_verified, verify_curr_properties,
	update_properties_after_pass): New functions.
	(execute_one_pass): Handle per-function properties.
	(execute_ipa_pass_list): Use do_per_function; sanity check that cfun
	and current_function_decls are cleared out.
	* ipa-cp.c (constant_val_insert): Clear cfun/current_function_decl
	after use.

2006-12-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* c.opt (Wempty-body): New.
	* doc/invoke.texi (Wempty-body): Document it.
	(Wextra): Enabled by -Wextra.
	* c-opts.c (c_common_post_options): Enabled by -Wextra.
	* c-common.c (empty_body_warning): Replace Wextra with Wempty-body.
	* c-parser.c (c_parser_c99_block_statement): Likewise.

2006-12-15  Jakub Jelinek  <jakub@redhat.com>

	PR target/30185
	* config/rs6000/rs6000.md (div<mode>3): Use correct mode in
	force_reg call.

2006-12-15  Andrew Pinski  <pinski@gmail.com>

	PR tree-opt/30140
	* tree-inline.c (setup_one_parameter): Gimplify the statement if
	the variable is not a gimple register variable.

2006-12-15  Uros Bizjak  <ubizjak@gmail.com>

	* invoke.texi (mstringop-strategy): Add missing "byte_loop" value.

2006-12-14  Jan Hubicka  <jh@suse.cz>

	* tree-flow.h (struct stmt_ann_d): Move bitfield references_memory
	to proper place.

2006-12-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/30197
	* builtins.c (fold_builtin_cexp): New function to fold cexp
	to cexpi and exp parts.
	* tree-ssa-pre.c (try_combine_conversion): Also handle
	REALPART_EXPR and IMAGPART_EXPR.

2006-12-14  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30172
	* fold-const.c (fold_binary): Fold __complex__ ( x, 0 )
	+ __complex__ ( 0, y ) to __complex__ ( x, y ).
	Fold __complex__ (x, y) * +-I to __complex__ (-+y, +-x).

2006-12-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/30198
	* fold-const.c (fold_unary): Fold REALPART_EXPR of cexpi to cos.
	Fold IMAGPART_EXPR of cexpi to sin.

2006-12-14  Dorit Nuzman  <dorit@il.ibm.com>
	    Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* spu.c (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Defined.
	(spu_init_builtins): Mark the SPU_MASK_FOR_LOAD builtin decl as read
	only.
	(spu_expand_builtin_1): Handle the SPU_MASK_FOR_LOAD builtin.
	(spu_builtin_mask_for_load): New.
	* spu-builtins.def (SPU_MASK_FOR_LOAD): Define new builtin.
	* spu.md (UNSPEC_SPU_REALIGN_LOAD, UNSPEC_SPU_MASK_FOR_LOAD):New.
	(vec_realign_load_<mode>, spu_lvsr): New.

2006-12-13  Ian Lance Taylor  <iant@google.com>

	PR c++/19564
	PR c++/19756
	* c-typeck.c (parser_build_binary_op): Move parentheses warnings
	to warn_about_parentheses in c-common.c.
	* c-common.c (warn_about_parentheses): New function.
	* c-common.h (warn_about_parentheses): Declare.
	* doc/invoke.texi (Warning Options): Update -Wparentheses
	description.

2006-12-13  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c: Include tree-affine.h.
	(divide): Removed.
	(constant_multiple_of): Fix order of operators for division.
	(aff_combination_const, aff_combination_elt, aff_combination_scale,
	aff_combination_add_elt, aff_combination_add, aff_combination_convert,
	tree_to_aff_combination, add_elt_to_tree, unshare_aff_combination,
	aff_combination_to_tree): Moved to tree-affine.c and made to work with
	double_int coefficients.
	(get_computation_aff, get_computation_at): Work with double_int
	coefficients.
	(get_computation_cost_at): Do not use divide.
	(rewrite_use_nonlinear_expr, rewrite_use_address, rewrite_use_compare):
	Assert that expressing the computation did not fail.
	* tree-ssa-address.c: Include tree-affine.h.
	(add_to_parts, most_expensive_mult_to_index, addr_to_parts,
	create_mem_ref): Work with double_int coefficients.
	* tree-affine.c: New file.
	* tree-affine.h: New file.
	* tree-flow.h (struct affine_tree_combination): Removed.
	* Makefile.in (tree-affine.o): Add.
	(tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
	dependency.

2006-12-13  Peter Bergner  <bergner@vnet.ibm.com>

	PR middle-end/30191
	Revert:
	* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
	the offset == 0 "then" clauses.
	* config/rs6000/predicates.md (gpc_reg_operand): Check for
	reload_in_progress.

2006-12-13  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 53.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Remove dir register.
	(REG_ALLOC_ORDER): Remove one element due to removal of dir register.
	(FRAME_POINTER_REGNUM): Update register number to 20.
	(REG_CLASS_CONTENTS): Update contents due to removed dir register.
	(HI_REGISTER_NAMES): Remove "dirflag".

	* config/i386/i386.c (regclass_map): Remove dirflag entry.
	(dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
	Remove "dir" entry.
	(ix86_md_asm_clobbers): Remove "dirflag" default asm clobber.

	* config/i386/i386.md (R10_REG, R11_REG): Renumber.
	(sse_prologue_save, *sse_prologue_save_insn): Renumber
	hardcoded SSE register numbers.

	* config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
	hardcoded MMX register numbers.


2006-12-13  Mark Shinwell  <shinwell@codesourcery.com>

	* config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
	FLDMX.  Rename function to...
	(vfp_output_fldmd): ...this.
	(vfp_output_fstmx): Output FSTMD instead of FSTMX.  Rename
	function to...
	(vfp_output_fstmd): ...this.
	(vfp_emit_fstmx): Don't leave space in the frame layout for the
	FSTMX format word.  Rename function to...
	(vfp_emit_fstmd): ...this.
	(arm_get_vfp_saved_size): Don't add in space for the FSTMX format
	word.
	(arm_output_epilogue): Adjust comment to reflect use of FSTMD.
	(arm_unwind_emit_sequence): Don't compensate for the FSTMX format
	word.  Also emit "vsave" assembler directives in such cases rather
	than "save".
	* config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
	gnu_Unwind_Save_VFP): Adjust comments.
	(gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
	for saving and restoring using FSTMD and FLDMD rather than
	FSTMX and FLDMX.
	(gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
	New functions for saving and restoring the VFPv3 registers 16 .. 31.
	* config/arm/pr-support.c (gnu_unwind_execute): Add conditional
	compilation case to correctly handle unwind opcode 0xc8 when using
	VFP.
	* config/arm/unwind-arm.c (struct vfpv3_regs): New.
	(DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
	(__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
	__gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
	Declare.
	(restore_non_core_regs): Restore registers using FLDMD rather than
	FLDMX if required.  Also handle restoration of VFPv3 registers.
	(_Unwind_VRS_Pop): Handle saving and restoring of registers using
	FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
	including cases where the caller specifies a range of registers
	that overlaps the d15/d16 boundary.

2006-12-13  Diego Novillo  <dnovillo@redhat.com>

	PR 30089
	* tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
	accomodate 511 operands.

2006-12-13  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_cexpi): Fix typo.

2006-12-13  Jan Hubicka  <jh@suse.cz>

	* Makefile.in: Add dependencies.
	* tree-pretty-print.c: Include value-prof.h
	(dump_generic_bb_buff): Dump histograms
	* value-prof.c: Include pointer-set.h
	(gimple_alloc_histogram_value, histogram_hash, histogram_eq,
	set_histogram_value, gimple_histogram_value,
	gimple_add_histogram_value, gimple_remove_histogram_value,
	gimple_histogram_value_of_type, dump_histogram_value,
	dump_histograms_for_stmt, gimple_remove_stmt_histograms,
	gimple_duplicate_stmt_histograms, visit_hist,
	verify_histograms): New functions.
	(tree_value_profile_transformations): Update for new histogram API.
	(tree_divmod_fixed_value): Update for new histogram API.
	(tree_divmod_fixed_value_transform): Update for new histogram API.
	(tree_mod_pow2): Update for new histogram API.
	(tree_mod_pow2_value_transform): Update for new histogram API.
	(tree_mod_subtract): Update for new histogram API.
	(tree_mod_subtract_transform): Update for new histogram API.
	(tree_stringops_transform): Update for new histogram API.
	(tree_divmod_values_to_profile): Update for new histogram API.
	(tree_stringops_values_to_profile): Update for new histogram API.
	(tree_find_values_to_profile): Update for new histogram API.
	* value-prof.h (gimple_histogram_value): Declare.
	(gimple_histogram_value_of_type): Declare.
	(gimple_add_histogram_value): Declare.
	(gimple_remove_histogram_value): Declare.
	(dump_histograms_for_stmt): Declare.
	(gimple_remove_histogram_value): Declare.
	(gimple_remove_stmt_histograms): Declare.
	(gimple_duplicate_stmt_histograms): Declare.
	(verify_histograms): Declare.
	* function.h
	(struct funrction): Add value_histograms hash.
	(VALUE_HISTOGRAMS): New macro.
	* profile.c (compute_value_histograms): update for new API.
	* tree-inline.c: Include value-prof.h
	(copy_bb): Update histograms.
	* tree-flow.h (struct stmt_ann_d): Do not contain pointer to histograms;
	reorder to get smaller memory layout.
	* tree-cfg.c: Include value-prof.h
	(bsi_remove): Update histograms.
	(bsi_replace): Update histograms.
	(verify_stmts): Call histogram verifier.
	(tree_duplicate_bb): Update histograms.
	(move_block_to_fn): Update histograms.

2006-12-13  Richard Guenther  <rguenther@suse.de>

	* ipa-inline.c (cgraph_flatten_node): Replace leafify with
	flatten.
	(cgraph_decide_inlining): Likewise.

2006-12-13  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/17687
	* builtins.def (BUILT_IN_CEXPI, BUILT_IN_CEXPIF, BUILT_IN_CEXPIL):
	New builtins for imaginary argument cexp.
	* builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
	BT_FN_COMPLEX_DOUBLE_DOUBLE, BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE):
	New required builtin types.
	* builtins.c (expand_builtin_cexpi): Declare.
	(mathfn_built_in): Handle BUILT_IN_CEXPI.
	(expand_builtin_cexpi): New static helper.
	(expand_builtin): Call it.
	(do_mpfr_sincos): Adjust for CEXPI evaluation.
	(fold_builtin_sincos): New function to fold sincos to cepxi.

2006-12-13  Richard Guenther  <rguenther@suse.de>

	* ipa-reference.c (scan_for_static_refs): Also scan
	tcc_comparison class trees.

2006-12-12 David Daney  <ddaney@avtrex.com>

	* config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
	define.

2006-12-12  Andrew Pinski  <pinskia@gmail.com>

	* tree-vect-transform.c (vect_permute_load_chain):
	Set DECL_GIMPLE_REG_P to true for the vect_perm_*
	temp variables.

2006-12-13  Sa Liu  <saliu@de.ibm.com>
	    Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
	(REGISTER_TARGET_PRAGMAS): Don't zero warn_main flag.
	* config/spu/spu-protos.h (spu_c_common_override_options):
	Declare.
	* config/spu/spu-c.c (spu_c_common_override_options): New.
	* config/spu/spu.c (spu_override_options): Whitespace fix.

2006-12-12  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu.c (cpat_info): Fix an incorrectly identified case.

2006-12-12  Geoffrey Keating  <geoffk@apple.com>

	* mips-tdump.c: Replace CROSS_COMPILE with
	CROSS_DIRECTORY_STRUCTURE.
	* mips-tfile.c: Likewise.
	* gcc.c: Likewise.
	* configure.ac: Likewise.
	* cppdefault.c: Likewise.
	* Makefile.in: Likewise.
	* config/alpha/osf.h: Likewise.
	* config/i386/cygwin.h: Likewise.
	* config/i386/beos-elf.h: Likewise.
	* config/i386/nto.h: Likewise.
	* config/fr30/fr30.h: Likewise.
	* config/svr4.h: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/pa/pa-hpux10.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.
	* collect2.c: Likewise.
	* configure: Regenerate.

	* doc/tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP
	actually takes an unsigned HOST_WIDE_INT for its second parameter.

2006-12-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
	(spu_encode_section_info): New.
	* config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
	(SYMBOL_FLAG_ALIGN1): New.

2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/28624
	* tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
	bitmap for EXECUTE_IF_SET_IN_BITMAP.

2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/28436
	* tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
	(DECL_GIMPLE_REG_P): This.
	* fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
	using BIT_FIELD_REF.
	* omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
	* tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
	and check for VECTOR_TYPE.
	* expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
	vector types.
	* tree-flow-inline.h (var_can_have_subvars): Use the renamed
	DECL_GIMPLE_REG_P.
	* gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
	and check for VECTOR_TYPE.
	(gimplify_bind_expr): Likewise.
	(gimplify_function_tree): Likewise.
	* expmed.c: Include target.h.
	(extract_bit_field): For vector mode, try find a better mode first.
	If that fails use gen_lowpart (for vectors only).
	* tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
	and check for VECTOR_TYPE.
	* tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
	(insert_into_preds_of_block): Likewise.
	(insert_fake_stores): Create gimple register store_tmps for
	vector types.
	* tree-sra.c (sra_elt): New field, is_vector_lhs.
	(sra_walk_expr <case BIT_FIELD_REF>): For vector types that
	are the left hand side, set the element's is_vector_lhs to true.
	(instantiate_element): For vector types which were on the left
	hand size, set DECL_GIMPLE_REG_P to false.
	* tree-nested.c (create_tmp_var_for): Use the renamed
	DECL_GIMPLE_REG_P.
	* tree-inline.c (declare_return_variable):  Use the renamed
	DECL_GIMPLE_REG_P and check for VECTOR_TYPE.
	(copy_decl_to_var):  Use the renamed DECL_GIMPLE_REG_P.
	(copy_result_decl_to_var): Likewise.
	* tree-vect-transform.c (vect_get_new_vect_var): For vector types,
	create a gimple register variable.
	(vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
	vect_inter_* temp variables.
	* Makefile.in (expmed.o): Update dependencies.

2006-12-12  Peter Bergner  <bergner@vnet.ibm.com>

	* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
	the offset == 0 "then" clauses.
	* config/rs6000/predicates.md (gpc_reg_operand): Check for
	reload_in_progress.

2006-12-12  Marcin Dalecki  <martin@dalecki.de>

	* doc/passes.texi: remove docs about "redundant PHI removal".
	* tree-pass.h: remove orphaned declaration of pass_redundant_phi,
	remove redundant pass_partition_blocks declaration.

2006-12-12  Andrew Macleod  <amacleod@redhat.com>

	PR tree-optimization/30159
	* tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name
	functions in case a default_def coalesce is required.

2006-12-12  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/11953
	* gthr-posix.h (_REENTRANT): Only define if __osf__ is defined.

	* config/ia64/linux.h (CPP_SPEC): Define.
	* config/s390/linux.h (CPP_SPEC): Define.

2006-12-12  Jim Wilson  <wilson@specifix.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/27761
	* combine.c (try_combine): Don't create a useless garbage SET
	if PATTERN (i2) is a PARALLEL.  If added_sets_1, save
	PATTERN (i1) resp. SET from i1src to i1dest in i1pat
	and use it to prevent accidental modification of i1src.

2006-12-12  Ira Rosen  <irar@il.ibm.com>

	* tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check
	for stores with gaps.
	* tree-vect-transform.c (vect_permute_store_chain): Create
	interleave_high or interleave_low according to the endianess.

2006-12-12  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30147
	* fold-const.c (fold_read_from_constant_string): Only fold read
	from constant string if the result type is integer.

2006-12-12  Olivier Hainque  <hainque@adacore.com>

	* config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.

2006-12-12  Olivier Hainque  <hainque@adacore.com>

	* config/vxlib.c: Extract tls related routines into ...
	* config/vxlib-tls.c: New file.
	* config/t-vxworks: Add vxlib-tls.c to LIB2FUNCS_EXTRA.

2006-12-12  Sa Liu  <saliu@de.ibm.com>
	    Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.opt (mfixed-range): New option.
	* config/spu/spu.h (spu_fixed_range_string): Declare.
	* config/spu/spu.c (spu_override_options): Handle -mfixed-range.
	(fix_range): New function.
	* doc/invoke.texi (SPU Options): Document -mfixed-range.
	* testsuite/gcc.target/spu/fixed-range.c: New.
	* testsuite/gcc.target/spu/fixed-range-bad.c: Ditto.

2006-12-11  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/17982
	PR middle-end/20218
	* cgraphunit.c (cgraph_optimize): Remove call to
	process_pending_assemble_externals.

	* config/elfos.h (ASM_OUTPUT_EXTERNAL): New.

	* config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed.

	* config/ia64/ia64.c (ia64_asm_output_external): Rewritten.
	(ia64_hpux_add_extern_decl): Removed.
	(ia64_hpux_file_end): Likewise.
	(extern_func_list): Likewise.
	(extern_func_head): Likewise.

	* output.h (assemble_external): Update comments.
	(default_elf_asm_output_external): New.
	(maybe_assemble_visibility): New.

	* toplev.c (compile_file): Update comment.

	* varasm.c (assemble_external): Always put it on
	pending_assemble_externals.
	(maybe_assemble_visibility): Make it extern and return int.
	(default_elf_asm_output_external): New.

2006-12-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (handle_ptr_arith): Return false when we
	can't handle the pointer arithmetic.

2006-12-11  Diego Novillo  <dnovillo@redhat.com>

	* doc/tree-ssa.texi: Update documentation for virtual operands
	and the use of push_stmt_changes/pop_stmt_changes.
	* doc/invoke.texi: Remove documentation for params
	global-var-threshold.
	Update documentation on max-aliased-vops.

	* tree-into-ssa.c: Cleanup comments, variables and
	spacing in various functions.
	(regs_to_rename): Declare.
	(mem_syms_to_rename): Declare.
	(dump_update_ssa): Declare.
	(debug_update_ssa): Declare.
	(dump_names_replaced_by): Declare.
	(debug_names_replaced_by): Declare.
	(dump_def_blocks): Declare.
	(debug_def_blocks): Declare.
	(dump_defs_stack): Declare.
	(debug_defs_stack): Declare.
	(dump_currdefs): Declare.
	(debug_currdefs): Declare.
	(mark_def_sites): Do not handle virtual operands.
	(compute_idf): Rename from find_idf.  Update users.
	(register_new_def): Make local.  Convert second argument
	to 'tree'.
	Use BLOCK_DEFS_STACK directly.
	If pushing a non-register, also push the underlying
	symbol.
	(rewrite_stmt): Do not handle virtual operands.
	(dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
	dump_currdefs and dump_tree_ssa_stats.
	(dump_tree_ssa_stats): Also dump REPL_TBL.
	(replace_use): Remove.  Update all users to call SET_USE
	instead.
	(rewrite_blocks): Move code to free memory to
	fini_ssa_renamer.
	(mark_def_site_blocks): Move initialization code to
	init_ssa_renamer.
	(init_ssa_renamer): New.
	(fini_ssa_renamer): New.
	(rewrite_into_ssa): Call them.
	(prepare_block_for_update): Process SSA_OP_ALL_USES first
	and SSA_OP_ALL_DEFS later.  Do not process virtual
	operands separately.
	(dump_update_ssa): Call dump_decl_set.
	(init_update_ssa): Initialize regs_to_rename and
	mem_syms_to_rename.
	Call init_ssa_renamer.
	(delete_update_ssa): Call fini_ssa_renamer.
	Free blocks_with_phis_to_rewrite.
	(mark_sym_for_renaming): If the variable has
	sub-variables, also mark them.
	If the variable belongs to a partition, also mark it.
	(mark_set_for_renaming): Call mark_sym_for_renaming on
	every symbol in the set.
	(switch_virtuals_to_full_rewrite): Call
	mark_set_for_renaming.
	(update_ssa): Separate syms_to_rename into regs_to_rename
	and mem_syms_to_rename.

	* tree-dump.c (dump_options): Add TDF_MEMSYMS.
	* tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
	(debug_generic_stmt): Likewise.
	(debug_tree_chain): Likewise.
	(dump_symbols): New.
	(dump_generic_node): Check for TDF_MEMSYMS.
	Handle MEMORY_PARTITION_TAG.
	If the statement references memory and TDF_MEMSYMS is
	given, call dump_symbols.
	Indicate default names with (D).
	(dump_vops): Update for new virtual operator format.

	* tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
	tree_contains_struct.
	(tree_code_size): Handle MEMORY_PARTITION_TAG.
	(tree_node_structure): Likewise.
	(needs_to_live_in_memory): Handle SSA names.
	* tree.h (MTAG_P): Likewise.
	(struct tree_memory_partition_tag): Declare.
	(MPT_SYMBOLS): Define.
	(union tree_node): Add field 'mpt'.
	* treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
	* tree.def (MEMORY_PARTITION_TAG): Define.

	* tree-pass.h (TDF_MEMSYMS): Define.

	* params.h (GLOBAL_VAR_THRESHOLD): Remove.

	* tree-ssa-alias.c: Include pointer-set.h
	(struct alias_map_d): Remove fields total_alias_vops,
	grouped_p and may_aliases.  Update all users.
	(struct mp_info_def): Declare.
	(mp_info_t): New type.
	(get_smt_for): Rename from get_tmt_for.  Update all
	users.
	(add_may_alias): Add argument ALREADY_ADDED.  If given,
	use it to avoid adding duplicate entries to alias sets.
	(replace_may_alias): Remove.  Update all users.
	(total_alias_vops_cmp): Remove.  Update all users.
	(group_aliases_into): Remove.  Update all users.
	(tree_pointer_compare): Remove.  Update all users.
	(compact_name_tags): Remove.  Update all users.
	(group_aliases): Remove.  Update all users.
	(mark_non_addressable): Move from tree-flow-inline.h.
	Remove the symbol from the partition holding it, if
	needed.
	(dump_mp_info): New.
	(debug_mp_info): New.
	(sort_mp_info): New.
	(create_partition_for): New.
	(rewrite_alias_set_for): New.
	(compute_memory_partitions): New.
	(compute_may_aliases): Call it.
	(init_alias_info): If computing aliases for the first
	time, mark every memory symbol for renaming.
	(have_common_aliases_p): New.
	(compute_flow_insensitive_aliasing): Call it.
	(setup_pointers_and_addressables): Do not cache
	num_referenced_vars.
	For register promoted symbols, mark their former
	partition for renaming.
	(maybe_create_global_var): Only create .GLOBAL_VAR if
	there are no call-clobbered variables and a mix of pure
	and non-pure functions were found.
	(may_alias_p): Tidy comments.
	(create_tag_raw): Remove unused variable new_type.
	(dump_alias_info): call dump_memory_partitions.
	(dump_points_to_info_for): Call dump_decl_set.
	(may_be_aliased): Tidy comments and formatting.

	* timevar.def (TV_MEMORY_PARTITIONING): Define.
	* tree-vectorizer.c (vect_memsyms_to_rename): Rename from
	vect_vnames_to_rename.  Set DECL_UIDs instead of SSA name
	versions in it.
	(slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
	* tree-vect-transform.c (vect_transform_loop): Call
	mark_set_for_renaming with vect_memsyms_to_rename.
	* tree-flow-inline.h (zero_imm_uses_p): New.
	(memory_partition): New.
	(set_memory_partition): New.
	(factoring_name_p): New.
	(symbol_mem_tag): New.  Update every function that used
	to access the annotation directly.
	(set_symbol_mem_tag): Likewise.

	* tree-ssa-copy.c (may_propagate_copy): Allow copies
	between a partition and a symbol as long as the symbol
	belongs to the partition.
	(merge_alias_info): Ignore merge requests when memory
	partitions are involved.

	* tree-ssa.c (verify_ssa_name): Check that default
	definitions have empty defining statements.
	(verify_use): Remove argument IS_VIRTUAL.
	Don't call verify_ssa_name.
	(verify_phi_args): Call verify_ssa_name.
	(verify_flow_insensitive_alias_info): Handle MPTs.
	(verify_flow_sensitive_alias_info): Likewise.
	(verify_name_tags): Likewise.
	(verify_call_clobbering): Likewise.
	(verify_ssa): Check for VOPs only after aliasing
	information is available.
	Check virtuals and real operands separately.
	Call verify_ssa_name on every operand.
	(stmt_references_memory_p): Move to tree-ssa-operands.c.
	(walk_use_def_chains_1): Guard against NULL PHI
	arguments.

	* tree-ssa-operands.c (stmt_references_memory_p): Move from
	tree-ssa.c.
	(get_mpt_for): New.
	(dump_memory_partitions): New.
	(debug_memory_partitions): New.

	* tree-flow.h (struct var_ann_d): Add field mpt.
	(struct stmt_ann_d): Add bitfield references_memory.
	* Makefile.in (tree-ssa-structalias.o): Include
	pointer-set.h
	(tree-ssa-alias.o): Likewise.
	* tree-ssa-structalias.c: (update_alias_info): Use
	STORED_SYMS to determine which variables are being
	written to by the store operation.
	* tree-ssa-structalias.h (struct alias_info)
	<total_alias_vops>: Remove.  Update all users.
	<written_vars>: Change to a pointer set.  Update all
	users.
	<dereferenced_ptrs_store>: Likewise.
	<dereferenced_ptrs_load>: Likewise.
	(NUM_REFERENCES): Remove.  Update all users.
	(NUM_REFERENCES_CLEAR): Remove.  Update all users.
	(NUM_REFERENCES_INC): Remove.  Update all users.
	(NUM_REFERENCES_SET): Remove.  Update all users.

	* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
	Update all users.
	(PARAM_MAX_ALIASED_VOPS): Set to 10.
	* tree-ssanames.c (make_ssa_name): Initialize
	SSA_NAME_IS_DEFAULT_DEF to 0.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-dse.c (aggregate_vardecl_d): New.
	(dse_global_data): Add aggregate_vardecl field.
	(dse_possible_dead_store_p): New.
	Add prev_defvar variable.
	Allow immediate uses and previous immediate uses to differ
	if they are setting different parts of the whole.
	(get_aggregate_vardecl): New.
	(dse_record_partial_aggregate_store): New.
	(dse_whole_aggregate_clobbered_p): New.
	(dse_partial_kill_p): New.
	(dse_optimize_stmt): Abstract code checking a possible dead store
	into new function dse_possible_dead_store_p().
	Call dse_maybe_record_aggregate_store().
	When checking whether a STMT and its USE_STMT refer to the
	same memory address, check also for partial kills that clobber
	the whole.
	Move some variable definitions to the block where they are used.
	(aggregate_vardecl_hash): New.
	(aggregate_vardecl_eq): New.
	(aggregate_vardecl_free): New.
	(aggregate_whole_store_p): New.
	(tree_ssa_dse): Initialize and free aggregate_vardecl.
	Mark which aggregate stores we care about.

2006-12-11  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-operands.h (struct vuse_element_d): Declare.
	(vuse_element_t): Declare.
	(struct vuse_vec_d): Declare.
	(vuse_vec_p): Declare.
	(VUSE_VECT_NUM_ELEM): Define.
	(VUSE_VECT_ELEMENT_NC): Define.
	(VUSE_ELEMENT_PTR_NC): Define.
	(VUSE_ELEMENT_VAR_NC): Define.
	(VUSE_VECT_ELEMENT): Define.
	(VUSE_ELEMENT_PTR): Define.
	(VUSE_ELEMENT_VAR): Define.
	(struct maydef_optype_d) <use_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct vuse_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct mustdef_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(VUSE_OP_PTR): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_OP): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_NUM): Define.
	(VUSE_VECT): Define.
	(MAYDEF_OP_PTR): Add argument.  Use VUSE_OP_PTR.
	(MAYDEF_OP): Add argument.  Use VUSE_OP.
	(MAYDEF_NUM): Define.
	(MAYDEF_VECT): Define.
	(MUSTDEF_KILL_PTR): Use VUSE_OP_PTR.
	(MUSTDEF_KILL): Use VUSE_OP.
	(MUSTDEF_NUM): Define.
	(MUSTDEF_VECT): Define.
	(realloc_maydef): Declare.
	(realloc_vuse): Declare.
	(struct ssa_operand_iterator_d) <vuse_index>: Add.
	<mayuse_index>: Add.
	(LOADED_SYMS): Define.
	(STORED_SYMS): Define.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
	* tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
	operators.
	* tree-pretty-print.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* tree-flow-inline.h: Likewise.
	(op_iter_next_mustdef): New.
	* tree-ssa-operands.c: Likewise.
	(ALLOC_OPTYPE): Remove.
	Update all users.
	(alloc_def): New.
	(alloc_use): New.
	(alloc_maydef): New.
	(alloc_vuse): New.
	(alloc_mustdef): New.
	(realloc_maydef): New.
	(realloc_vuse): New.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-operands.c: Remove build_v_must_defs.
	(init_ssa_operands): Delete build_v_must_defs.
	(finalize_ssa_v_must_def_ops): Remove.
	(finalize_ssa_v_must_defs): Remove.
	(finalize_ssa_stmt_operands): Do not call
	finalize_ssa_v_must_defs.
	(start_ssa_stmt_operands): Do not check build_v_must_defs.
	(append_v_must_def): Delete.
	(copy_virtual_operands): Do not copy V_MUST_DEFs.
	(get_modify_expr_operands): Remove reference to V_MUST_DEF from
	comment.  Remove opf_kill_def.
	(build_ssa_operands): Remove references to v_must_defs.
	(copy_virtual_operands): Same.
	(copy_virtual_operands): Same.
	(fini_ssa_operands): Same.
	(free_ssa_operands): Same.
	(add_mustdef_op): Remove.
	Remove mustdef_optype_p.
	(alloc_mustdef): Remove.
	Remove references to V_MUST_DEFs in comment at top of file.
	(get_expr_operands): Remove opf_kill_def.
	(opf_kill_def): Remove.
	(add_virtual_operand): Remove opf_kill_def.
	(get_indirect_ref_operands): Same.
	(get_tmr_operands): Same.

	* tree-vectorizer.c (rename_variables_in_bb): Remove
	SSA_OP_ALL_KILLS.

	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
	SSA_OP_ALL_KILLS.
	(check_loop_closed_ssa_stmt): Same.

	* tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
	(verify_use): Same.
	(verify_ssa): Remove V_MUST_DEFs traces.
	(verify_ssa): Remove SSA_OP_ALL_KILLS.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.
	(rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
	(rewrite_stmt): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
	references.
	(MUSTDEF_OPS): Remove.
	(SSA_OP_VMUSTDEF): Remove.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Remove.
	(struct mustdef_optype_d): Remove.
	Remove mustdef_optype_p.
	(struct stmt_operands_d): Remove mustdef_ops.
	(ssa_operand_iterator_d): Remove mustdefs and mustkills.
	(SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
	(MUSTDEF_RESULT_PTR): Remove.
	(MUSTDEF_RESULT): Remove.
	(MUSTDEF_KILL_PTR): Remove.
	(MUSTDEF_KILL): Remove.
	(MUSTDEF_NUM): Remove.
	(MUSTDEF_VECT): Remove.
	(SSA_OP_VIRTUAL_KILLS): Remove.
	(SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
	(SSA_OP_VMUSTKILL): Remove.
	(SSA_OP_ALL_KILLS): Remove.
	(SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.

	* tree-flow-inline.h (op_iter_init_def): Remove
	SSA_OP_VIRTUAL_KILLS.
	(delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VIRTUAL_KILLS.

	* tree-ssa-loop-im.c (determine_max_movement): Remove
	SSA_OP_VIRTUAL_KILLS.
	(gather_mem_refs_stmt): Same.
	(gather_mem_refs_stmt): Same.

	* tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
	(perform_tree_ssa_dce): Remove call to
	mark_really_necessary_kill_operand_phis.

	* tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
	and mustkills.
	(op_iter_next_use): Do not check mustkills.
	(op_iter_next_def): Do not check mustdefs.
	(op_iter_next_tree): Do not check mustkills or mustdefs.
	(clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
	(op_iter_next_maymustdef): Do not check mustkills.
	(op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
	(op_iter_init_mustdef): Remove.

	* tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.

	* tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.

	* tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
	(visit_assignment): Same.

	* tree-ssa-copy.c (copy_prop_visit_assignment): Same.

	* tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.

	* tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.

	* tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
	Remove kill_p variable.

	* tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
	(dump_dfa_stats): Remove code related to V_MUST_DEFs.
	(collect_dfa_stats_r): Do not set num_v_must_defs.
	(mark_new_vars_to_rename): Remove v_must_defs_{before,after}
	code.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
	SSA_OP_VMAYUSE.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.

	* tree-ssa-propagate.c (stmt_makes_single_store): Remove
	SSA_OP_VMUSTDEF.

2006-12-11  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/30113
	* loop-iv.c (implies_p): Require the mode of the operands to be
	scalar.

2006-12-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.h (create_ssa_artificial_load_stmt):
	Rename from create_ssa_artficial_load_stmt.  Update all users.
	* tree-into-ssa.c (register_new_def): Make static.
	* tree.c (is_global_var): Handle SSA_NAMEs.
	* tree.h (SSA_NAME_IS_DEFAULT_DEF): Define.  Update all users
	that used to call gimple_default_def.
	* tree-ssa-operands.c (push_stmt_changes): New.
	(pop_stmt_changes): New.  Update every pass that modifies
	statements to bracket modifications with
	push_stmt_changes/pop_stmt_changes.
	(discard_stmt_changes): New.
	* tree-ssa-dom.c (stmts_to_rescan): Change to stack of
	'tree *' instead of 'tree'.  Update all users.
	* tree-flow-inline.h (zero_imm_uses_p): New.
	(symbol_mem_tag): New.  Update every function that used
	to access the annotation directly.
	(set_symbol_mem_tag): Likewise.
	* tree-dfa.c (dump_variable): Always show the escape mask.
	(mark_symbols_for_renaming): Rename from
	mark_new_vars_to_rename.  Update all users.
	Only mark to rename naked symbols in real and virtual
	operands.

2006-12-11  Andreas Schwab  <schwab@suse.de>

	* varasm.c (elf_record_gcc_switches): Cast second argument of
	ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.

2006-12-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-scalar-evolution.c (scev_const_prop):
	* tree-phinodes.c (remove_phi_node): Add argument
	RELEASE_LHS_P.  If given, release the SSA name on the LHS of
	the PHI node.
	Update all users.
	* tree-ssa-dce.c: Remove forward declarations for static
	functions.  Re-arrange functions bodies as needed.
	(find_obviously_necessary_stmts): Never mark PHI nodes as
	obviously necessary.

2006-12-11  Carlos O'Donell  <carlos@codesourcery.com>

	* config/arm/elf.h (MAX_OFILE_ALIGNMENT): Remove definition.

2006-12-11  Jan Hubicka  <jh@suse.cz>

	* value-prof.c (tree_stringops_transform): New.
	(tree_value_profile_transformations): Require count to be non-zero;
	call stringop transform; reset stmt BSI after BB changed.
	(tree_divmod_fixed_value, tree_mod_pow2): Don't emit unnecesary label.
	(interesting_stringop_to_profile_p, tree_stringop_fixed_value): New.
	(tree_stringops_values_to_profile): New.
	(tree_values_to_profile): Call tree_stringops_values_to_profile.
	* tree.h (build_string_literal): Tidy prototype.
	(validate_arglist, builtin_memset_read_str, get_pointer_alignment):
	Declare.
	* builtins.c (validate_arglist, builtin_memset_read_str,
	get_pointer_alignment): Export.

2006-12-11  Uros Bizjak  <ubizjak@gmail.com>

	PR target/30120
	Revert:
	2006-11-15  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.opt: New target option -mx87regparm.

	* config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
	float_in_x87: Add new variables. mmx_words, sse_words: Remove.
	(X87_REGPARM_MAX): Define.

	* config/i386/i386.c (override_options): Error out for
	-mx87regparm but no 80387 support.
	(ix86_attribute_table): Add x87regparm.
	(ix86_handle_cconv_attribute): Update comments for x87regparm.
	(ix86_comp_type_attributes): Check for mismatched x87regparm types.
	(ix86_function_x87regparm): New function.
	(ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
	point registers.
	(init_cumulative_args): Initialize x87_nregs and float_in_x87
	variables.
	(function_arg_advance): Process x87_nregs and x87_regno when
	floating point argument is to be passed in 80387 register.
	(function_arg): Pass XFmode arguments in 80387 registers for local
	functions.  Pass SFmode and DFmode arguments to local functions
	in 80387 registers when flag_unsafe_math_optimizations is set.

	* reg-stack.c (convert_regs_entry): Disable NaN load for
	stack registers that are used for argument passing.

	* doc/extend.texi: Document x87regparm function attribute.
	* doc/invoke.texi: Document -mx87regparm.

2006-12-11  Jan Hubicka  <jh@suse.cz>

	Move all varpool routines out of cgraph/cgraphunit to varpool.c
	* cgraph.c: Update comments.
	(cgraph_varpool_hash,
	cgraph_varpool_nodes, cgraph_varpool_last_needed_node
	cgraph_varpool_node_name, cgraph_varpool_node,
	cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_variable_initializer_availability): Move to
	varpool.c and drop cgraph_ prefixes.
	(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
	move to varpool.c; drop cgraph_ prefix; make static.
	(dump_cgraph_varpool_node): Move to varpool.c under name
	dump_varpool_node.
	(dump_varpool, hash_varpool_node, eq_varpool_node,
	decide_is_variable_needed): Move to varpool.c
	(decl_assembler_name_equal): Move to tree.c.
	(availability_names): Rename to ...
	(cgraph_availability_names): ... this one.
	(dump_cgraph_node): Update.
	* cgraph.h: Reorder declarations now in varpool.c
	(cgraph_vailablity_names): Declare.
	(struct cgraph_varpool_node): Rename to ...
	(struct varpool_node): ... this one.
	(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
	cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
	cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
	cgraph_variable_initializer_availability): Rename to ...
	(varpool_first_unanalyzed_node, varpool_nodes_queue,
	varpool_first_unanalyzed_node, varpool_node,
	varpool_node_for_asm, varpool_mark_needed_node,
	varpool_finalize_decl, varpool_enqueue_needed_node,
	varpool_assemble_pending_decls, variable_initializer_availability):
	Rename to ...
	* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
	* tree.h (decl_assembler_name_equal): Declare.
	* omp-low.c (lower_omp_critical): Update.
	* ipa-reference (analyze_variable, static_execute): Likewise.
	* toplev.c (wrapup_global_declaration_2, compile_file): Update.
	* cgraphunit.c: Update comments.
	(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
	varpool_assembled_nodes_queue.
	(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
	varpool_analyze_pending_decls.
	(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
	varpool_remove_unreferenced_decls.
	(record_reference): Update.
	(cgraph_create_edges): Update.
	(record_referneces_in_initializer): New function.
	(cgraph_varpool_assemble_decl): Move to varpool.c under name
	varpool_assemble_decl; make global.
	(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
	varpool_assemble_pending_decls.
	(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
	struct cgraph_order_sort, cgraph_output_in_order,
	cgraph_function_and_variable_invisibility, cgraph_optimize,
	cgraph_increase_alignment): Update.
	* dwarf2out.c (decls_for_scope): Likewise.
	* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
	* except.c (output_ttype): Likewise.
	* varasm.c (mark_decl_referenced): Likewise.
	(find_decl_and_mark_referenced, assemble_alias): update.
	* Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
	* passes.c (rest_of_decl_compilation): Update.

2006-12-11  Ira Rosen  <irar@il.ibm.com>

	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Use
	GIMPLE_STMT_OPERAND.
	* tree-vect-transform.c (vect_permute_store_chain): Likewise.
	(vect_setup_realignment): Likewise.

2006-12-11  Sa Liu  <saliu@de.ibm.com>
	    Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu-elf.h (STARTFILE_SPEC): Update.
	(ENDFILE_SPEC): Likewise.
	* config/spu/spu.opt (mstdmain): New option.
	* config/spu/crti.asm: Remove.
	* config/spu/crtn.asm: Likewise.
	* config/spu/crt0.c: Likewise.
	* config/spu/crtend.c: Likewise.
	* config/spu/t-spu-elf (EXTRA_MULTILIB_PARTS): Remove crt0 files
	listed above.
	($(T)crti.o, $(T)crtn.o, $(T)crt1.o, $(T)crtend1.o): Remove.
	* doc/invoke.texi (SPU Options): Document -mstdmain.

2006-12-10  Zdenek Dvorak <dvorakz@suse.cz>

	* doc/loop.texi: Document number_of_latch_executions and
	number_of_cond_exit_executions.
	* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
	chrec_is_positive, number_of_iterations_for_all_loops,
	scev_const_prop): Use number_of_latch_executions.
	(set_nb_iterations_in_loop): Do not increase the value of the
	number of iterations.
	(number_of_iterations_in_loop): Renamed to ...
	(number_of_latch_executions): ... this.
	(number_of_exit_cond_executions): New function.
	* tree-scalar-evolution.h (number_of_iterations_in_loop): Declaration
	removed.
	(number_of_latch_executions, number_of_exit_cond_executions): Declare.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Use
	number_of_latch_executions.
	* tree-data-ref.c (get_number_of_iters_for_loop): Use
	number_of_exit_cond_executions.
	* tree-vect-analyze.c (vect_get_loop_niters): Ditto.
	* cfgloop.h (struct loop): Improve description of the nb_iterations
	field.

2006-12-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
	(tree_pointer_compare): Remove.

2006-12-10  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
	* loop-unswitch.c (unswitch_loops): Use FOR_EACH_LOOP.
	* tree-loop-linear.c (linear_transform_loops): Ditto.
	* tree-ssa-loop-im.c (determine_lsm): Ditto.
	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
	free_numbers_of_iterations_estimates): Ditto.
	* tree_ssa_unswitch_loops (tree_ssa_unswitch_loops): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
	* modulo-sched.c (sms_schedule): Ditto.
	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables,
	tree_unroll_loops_completely): Ditto.
	* predict.c (predict_loops): Ditto.
	* tree-if-conv.c (main_tree_if_conversion): Ditto.
	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
	decide_unrolling_and_peeling): Ditto.
	* cfgloopmanip.c (unloop): Use delete_loop.
	(place_new_loop): Access larray vector instead of parray.
	(create_preheaders, force_single_succ_latches,
	fix_loop_structure): Use FOR_EACH_LOOP and delete_loop..
	* loop-doloop.c (doloop_optimize_loops): Ditto.
	* loop-invariant.c (move_loop_invariants): Ditto.
	* tree-cfg.c (replace_uses_by): Ditto.
	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Ditto.
	* tree-chrec.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
	Moved to ...
	* tree.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
	... here.
	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
	compute_overall_effect_of_inner_loop, chrec_is_positive): Use
	get_loop and get_chrec_loop.
	(number_of_iterations_for_all_loops): Use number_of_loops.
	(scev_initialize, scev_reset, scev_const_prop): Use FOR_EACH_LOOP.
	* tree-scalar-evolution.h (get_chrec_loop): New inline function.
	* cfgloopanal.c (mark_irreducible_loops): Use number_of_loops,
	and FOR_EACH_LOOP.
	* tree-chrec.c (evolution_function_is_invariant_rec_p,
	chrec_convert_1): Use get_loop and get_chrec_loop.
	* loop-init.c (loop_optimizer_init): Use number_of_loops.
	(loop_optimizer_init): Use FOR_EACH_LOOP.
	* tree-vectorizer.c (vect_loops_num): Removed.
	(vectorize_loops): Store number of loops locally.  Use
	FOR_EACH_LOOP and get_loop.
	* tree-vectorizer.h (vect_loops_num): Removed.
	* tree-data-ref.c (get_number_of_iters_for_loop): Use get_loop.
	(find_data_references_in_loop): Do not set parallel_p.
	* tree-data-ref.h: Do not declare VEC(loop_p).
	* cfgloop.c (flow_loops_dump, mark_single_exit_loops,
	verify_loop_structure): Use FOR_EACH_LOOP.
	(flow_loops_free): Use FOR_EACH_LOOP, free larray vector.
	(initialize_loops_parallel_p): Removed.
	(flow_loops_find): Push the loops into a vector.
	(delete_loop): New function.
	(cancel_loop): Use delete_loop.
	* cfgloop.h: Declare VEC(loop_p).
	(struct loop): Remove parallel_p field.
	(struct loops): Replace num and parray field by larray vector.
	Remove shared_headers field.
	(delete_loop): Declare.
	(get_loop, get_loops, number_of_loops, fel_next, fel_init,
	FOR_EACH_LOOP): New.
	* doc/loop.tex: Document new accessor functions.

2006-12-10  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (-ftree-lrs): Remove live range splitting option.
	* makefile.in: Add tree-ssa-coalesce.o and reduce header dependancies.
	* opts.c (decode_options): Remove flag_tree_live_range_split.
	* tree-flow.h (struct var_ann_d): Rename fields from root_ to base_.
	* tree-flow-inline.h (single_imm_use_p): New.  Check for single use.
	* tree-outof-ssa.c: Remove header files which aren't needed.
	(SSANORM_*): Remove flags.
	(print_exprs_edge, coalesce_abnormal_edges, coalesce_phi_operands,
	coalesce_result_decls_and_copies, coalesce_asm_operands): Remove.
	(coalesce_ssa_name): Move to tree-ssa-coalesce.c.
	(assign_vars): Use Basevar instead of root_var structure.
	(replace_def_variable): Dont do anything if def is replaceable.
	(remove_ssa_form): Integrate functional changes.
	(rewrite_out_of_ssa): Remove live-range_split option.
	* tree-ssa-coalesce.c: New File for ssa-name coalescing.
	(coalesce_cost): Calculate the cost of a coalesce.
	(coalesce_cost_bb): Calculate the coalesce cost within a BB.
	(coalesce_cost_edge): Calculate the coalesce cost on an edge.
	(pop_cost_one_pair): Remove the best coalesce with cost 1 from the list.
	(pop_best_coalesce): Remove the best coalesce from the list.
	(coalesce_pair_map_hash): Calculate coalesce pair hash.
	(coalesce_pair_map_eq): Compare 2 coalesce pairs for hash function.
	(create_coalesce_list): Create a coalesce list object.
	(delete_coalesce_list): Free a coalesce list object.
	(find_coalesce_pair): Find matching pair in the coalesce list.
	(add_cost_one_coalesce): Add a coalesce to the "cost one" list.
	(add_coalesce): Add a coalesce to the coalesce list.
	(compare_pairs): Comparision function to determine pair sorted order.
	(num_coalesce_pairs): Number of coalesced pairs.
	(first_coalesce_pair, end_coalesce_pair_p, next_coalesce_pair):
	Coalesce pair iterator functions.
	(sort_coalesce_list): Sort coalesce pairs in order of expense.
	(dump_coalesce_list): Show coalesce list.
	(ssa_conflicts_new): Create an SSA conflict graph.
	(ssa_conflicts_delete): Delete an SSA conflict graph.
	(ssa_conflicts_test_p): Test for conflicts.
	(ssa_conflicts_add_one): Add a single conflict.
	(ssa_conflicts_add): Add a conflict pair.
	(ssa_conflicts_merge): Merge conflicts.
	(struct live_track_d): Struct for tracking live partitions.
	(new_live_track): Create new live_track object.
	(delete_live_track): Delete a live_track object.
	(live_track_remove_partition): Remove a partition from the live list.
	(live_track_add_partition): Add a partition from the live list.
	(live_track_clear_var): Take VAR from the live list.
	(live_track_live_p): Is var live?
	(live_track_process_use): Make var come alive.
	(live_track_process_def): Make var go dead, add conflicts.
	(live_track_init): Initialize to a live on exit set.
	(live_track_clear_base_vars): Clear live partitions.
	(build_ssa_conflict_graph): Build a conflict graph.
	(print_exprs): Common debug output routine.
	(abnormal_corrupt): Output info about a failed coalesce across an
	abnormal edge.
	(fail_abnormal_edge_coalesce): Output info about a failed MUST_COALESCE.
	(create_outofssa_var_map): Create a var map and coalesce list.
	(attempt_coalesce): Coalesce a pair.
	(coalesce_partitions): Coalesce all pairs in a coalesce list.
	(coalesce_ssa_name): Entry point.  Determine what ssa_names to coalesce.
	* tree-ssa-live.c: Remove header files which aren't needed.
	(var_map_base_init): New.  Initialize a basevar list.
	(var_map_base_fini): New.  Finish a basevar list.
	(init_var_map): Initialize new fields.
	(delete_var_map): Free new fields.
	(var_union): Use renamed fields.
	(compact_var_map): Remove.
	(partition_to_view_init): Use renamed fields, change order of an if.
	(partition_view_fini): Use renamed fields.
	(partition_view_normal): Create basevar list if requested.
	(partition_view_bitmap): Create a view based on a bitmap of partitions.
	(change_partition_var): Use renamed fields.
	(create_ssa_var_map): Remove.
	(tpa_init, tpa_remove_partition, tpa_delete, tpa_compact,
	root_var_init): Remove.
	(partition_pair_map_hash, partition_pair_map_eq, create_coalesce_list,
	delete_coalesce_list, find_partition_pair, coalesce_cost, add_coalesce,
	compare_pairs, num_coalesce_pairs, first_partition_pair,
	end_partition_pair_p, next_partition_pair, sort_coalesce_list,
	pop_best_coalesce, add_conflicts_if_valid, set_if_valid,
	build_tree_conflict_graph, coalesce_tpa_members, dump_coalesce_list,
	tpa_dump): Moved to tree-ssa-coalesce.c and/or renamed there.
	(dump_var_map): Use renamed fields.
	* tree-ssa-live.h (struct  _var_map): Modify fields.
	(partition_to_var, version_to_var, var_to_partition): Use renamed
	fields.
	(basevar_index): New.  Index of the base variable of a partition.
	(num_basevars): New.  Number of unique base variables in partition map.
	(register_ssa_partition): Use renamed fields.
	(struct tree_partition_associator_d): Remove.
	(tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
	tpa_find_tree, tpa_decompact, root_var_init, root_var_num,
	root_var, root_var_first_partition, root_var_next_partition,
	root_var_dump, root_var_delete, root_var_remove_partition,
	root_var_find, root_var_compact, root_var_decompact): Remove.
	(struct partition_pair, struct coalesce_list_d): Moved to
	tree-ssa-coalesce.c
	* tree-ssa-ter.c: Remove header files which aren't needed.

2006-12-10  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c: (struct cse_basic_block_data): Remove LAST field.
	(struct branch_path): Remove BRANCH and TAKEN fields. Add new
	BB field.
	(cse_visited_basic_blocks): New static bitmap.
	(cse_end_of_basic_block, cse_basic_block): Remove.
	(cse_find_path, cse_dump_path, cse_prescan_path,
	cse_extended_basic_block): New static functions.
	(cse_insn): Don't CSE over setjmp calls.  Use the CFG to find
	basic block boundaries.  Don't record jump equivalences here.
	Update the CFG after doing in-place replacement of the SET_SRC.
	(cse_main): Rewrite.  Look for extended basic block headers
	and call cse_extended_basic_block on them until all paths that
	start at this header are exhausted.
	(rest_of_handle_cse): Verify that the CFG is incrementally updated
	and correct after cse_main.
	Don't call delete_trivially_dead_insns, let cfgcleanup do that.
	(rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
	(pass_cse): Add TODO_verify_flow.
	(pass_cse2): Likewise.

2006-12-10  Rask Ingemann Lambertsen  <rask@sygehus.dk>

	* reload1.c (choose_reload_regs): Don't set byte offset when
	resolving subregs of hard regs.

2006-12-09  Zack Weinberg  <zackw@panix.com>

	* c-opts.c (c_common_parse_file): Unconditionally give a warning,
	suitable for the language, if set_yydebug is true.
	* c-pragma.h: Define enum pragma_omp_clause here.  Don't define
	YYDEBUG or declare yydebug.
	* c-parser.c (yydebug, enum pragma_omp_clause): Delete.

2006-12-09  Jan Hubicka  <jh@suse.cz>

	* cgraph.c: Update copyright.
	* cgraph.h: Likewise
	(cgraph_update_pending_function): Remove prototype.
	* cgraphunit.c: Update copyright; update overall comment.
	(cgraph_assemble_pending_functions): Make local.

2006-12-09  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (schedule_block): Remove excessive sanity check.

2006-12-08  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu-protos.h (spu_split_immediate): Renamed from
	spu_split_address.
	(cpat_const_p, gen_cpat_const): Add.
	* config/spu/spu.c (immediate_class): New enum.
	(cpat_info, classify_immediate): New.
	(print_operand): Use S, D, T instead of F, G, H.  Use
	classify_immediate.  Handle cpat cases.
	(spu_split_immediate):  Renamed from spu_split_address.  Split all
	immediates that can be split.
	(immediate_load_p): Use classify_immediate.
	(spu_legitimate_constant_p): Accept everything except some cases of
	CONST_VECTOR.
	(spu_expand_move): Use spu_split_immedate.
	(fsmbi_const_p): Use classify_immediate.
	(cpat_const_p): New.
	(gen_cpat_const: New.
	* config/spu/constraints.md (j,k,l): New constraints for cpat
	instructions.
	* config/spu/spu.md (unnamed splitter): Change address splitter to
	handle all immediates.
	(_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
	instructions.
	(cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
	when possible.

2006-12-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/30039
	* pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
	patterns.  Correct length of high:DI instruction sequence.

2006-12-08  Mike Stump  <mrs@apple.com>

	* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
	libgcc with -mmacosx-version-min=10.4.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
	G4 for 10.5+ unless doing kernel builds.

2006-12-08  Uros Bizjak  <ubizjak@gmail.com>

	PR target/30120
	* reg-stack.c (convert_regs_entry): Mark current argument passing
	registers as live.

	* config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
	of float arguments in x87 registers.

2006-12-08  John David Anglin  <dave.anglin.@nrc-cnrc.gc.ca>

	* pa.h (LEGITIMATE_CONSTANT_P): Simplify.

2006-12-08  Mark Shinwell  <shinwell@codesourcery.com>

	* recog.c (mode_dependent_address_p): Identify pre-increment,
	pre-decrement, post-increment and post-decrement addressing as always
	being mode-dependent.
	* config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
	* config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
	* config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
	PRE_INC and POST_INC checks.
	* config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
	PRE_INC, POST_DEC and POST_INC cases.
	* config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
	Delete POST_INC and PRE_DEC cases.
	* config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
	no-op.
	* config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
	no-op.
	* config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
	PRE_INC and PRE_DEC cases.
	* config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	(GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/vax/vax.c (vax_mode_dependent_address_p): Delete
	auto-increment cases.
	* config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
	auto-increment cases.
	* config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.

2006-12-08  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in: Add new file tree-ssa-ter.c.
	* tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table,
	free_temp_expr_table, add_value_to_version_list,
	add_value_to_partition_list, remove_value_from_partition_list,
	add_dependence, check_replaceable, finish_expr, mark_replaceable,
	kill_expr, kill_virtual_exprs, find_replaceable_in_bb,
	find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
	* tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
	prototypes.
	* tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
	(struct value_expr_d): Remove.
	(struct temp_expr_table_d): Rename fields, add explicit vector of
	replaceable expressions instead of sharing.  Change value_expr_p's to
	bitmap.  Delete free_list.
	(new_temp_expr_table): Rename fields, count number of ssa_names in
	each partition.
	(free_temp_expr_table): Rename field, free new fields.
	(new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
	add_info_to_list, remove_value_from_list): Delete.
	(version_to_be_replaced_p): New.  Is an ssa-name replaceable?
	(make_dependent_on_partition): New.  Set bit in version list, allocating
	a bitmap if need be.
	(add_to_partition_kill_list): New.  Set bit in the partition list,
	allocating a bitmap if need be.
	(remove_from_partition_kill_list): New.  Remove a bit from the
	partition list, free the bitmap if it is empty.
	(add_dependence): Use renamed field, cleanup.  Don't add a dependence
	on partitions with only one member.
	(is_replaceable_p): New.  Split out replaceability check from
	check_replaceable.
	(process_replaceable): New.  Code split from check_replaceable.
	(check_replaceable): Removed.
	(finished_with_expr): Renamed from finish_expr.
	(kill_expr): Use renamed fields and less parameters.
	(kill_virtual_exprs): Less parameters.
	(mark_replaceable): Use renamed fields.
	(find_replaceable_in_bb): Use renamed fields, cleanup.
	(find_replaceable_exprs): Use renamed routines, cleanup.
	(dump_replaceable_exprs): Don't go past end of ssa_names list.
	(debug_ter): New.  Debug routine to dump state.

2006-12-08  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (effective_address_32bit_p): Return true for
	anything involving the GOT.
	(bfin_adjust_cost): Don't take the REGNO of a MEM.
	(trapping_loads_p): Look inside the pattern of an insn to find the
	SET.
	* config/bfin/bfin.md (attr "type"): Add movcc.
	(insn_reservation "alu"): Likewise.
	(movsicc_insn1, movsicc_insn2): Change type to movcc.

2006-12-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* config/spu/spu-c.c (spu_build_overload_builtin): Delete.
	(spu_resolve_overloaded_builtin): Check for non scalar instead
	of vector type and check the function call argument type also for
	non scalar.
	Call build_function_call instead of spu_build_overload_builtin.

2006-12-07  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu.c (array_to_constant): Correct the order of arguments
	to the calls of hwint_to_const_double.

2006-12-07  Nick Clifton  <nickc@redhat.com>

	* config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to
	elf_record_gcc_switches.

2006-12-07  Andrew Macleod  <amacleod@redhat.com>

	* expr.c (string_constant): Account for non-zero lower bound arrays.

2006-12-07  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_pow): Adjust predicates for
	pow to cbrt expansion to unsafe math and !HONOR_NANS for
	negative base.

2006-12-07  Jan Hubicka  <jh@suse.cz>

	* i386.c (nocona_cost, pentium4_cost): Update preffered memcpy/memset
	codegen.

2006-12-07  Jan Hubicka  <jh@suse.cz>

	* tree-vrp.c (compare_values): Short circuit INTEGER_CST;
	use fold_constant_to_binary; tolerate wrong type constants.
	(value_intersect_p): Do just two tests.

2006-12-07  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
	* config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
	lshifthi3): Use it, and fix the order of alternatives.

2006-12-07  Nick Clifton  <nickc@redhat.com>

	* common.opt (record-gcc-switches): New command line switch.
	* target.h (print_switch_type): New enum.
	(print_switch_fn_type): New typedef for a function pointer.
	(struct gcc_target): Add record_gcc_switches and
	record_gcc_switches_section fields.
	* target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a
	default definition.
	(TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default
	definition.
	* toplev.c (print_single_switch): Simplify by providing a
	pointer to function that will format and output the switch
	appropriately.
	(print_switch_values): Likewise.
	(print_to_asm_out_file): New function.
	(print_to_stderr): New function.
	(init_asm_output): If flag_record_gcc_switches is set then if
	the target supports recording the switches then emit them into
	the assembler output file, otherwise tell the user that the
	switch is not supported.
	* varasm.c (eld_record_gcc_switches): New function.  Example
	handler for the record_gcc_switches target hook.
	* doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new
	target hook.
	(TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
	* doc/invoke.texi (-frecord-gcc-switches): Document.

2006-12-07  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR target/29794
	* sched-rgn.c (add_block1): Use correct initializer.

2006-12-07  Richard Guenther  <rguenther@suse.de>

	* tree-vect-transform.c (vectorizable_call): Fix leftover of
	TREE_OPERAND to GIMPLE_STMT_OPERAND conversion.

2006-12-06  Aldy Hernandez  <aldyh@redhat.com>

	PR/30079
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR
	not GIMPLE_MODIFY_STMT.

2006-12-06  Jan Hubicka  <jh@suse.cz>

	* tree-vrp.c (operand_less_p): New.
	(compare_values, value_inside_range): Rewrite in terms of
	operand_less_p.

2006-12-06 Uros Bizjak <ubizjak@gmail.com>

	* config/i386/i386.md (DIRFLAG_REG): Remove constant.
	(type): Remove cld.
	(length_immediate): Do not depend on cld type attribute.
	(length_address): Ditto.
	(modrm): Ditto.
	(memory): Ditto.
	(cld): Remove insn pattern.
	(strmov_singleop): Do not use DIRFLAG_REG.
	(*strmovdi_rex_1): Ditto.
	(*strmovsi_1): Ditto.
	(*strmovsi_rex_1): Ditto.
	(*strmovhi_1): Ditto.
	(*strmovhi_rex_1): Ditto.
	(*strmovqi_1): Ditto.
	(*strmovqi_rex_1): Ditto.
	(rep_mov): Ditto.
	(*rep_movdi_rex64): Ditto.
	(*rep_movsi): Ditto.
	(*rep_movsi_rex64): Ditto.
	(*rep_movqi): Ditto.
	(*rep_movqi_rex64): Ditto.
	(strset_singleop): Ditto.
	(*strsetdi_rex_1): Ditto.
	(*strsetsi_1): Ditto.
	(*strsetsi_rex_1): Ditto.
	(*strsethi_1): Ditto.
	(*strsethi_rex_1): Ditto.
	(*strsetqi_1): Ditto.
	(*strsetqi_rex_1): Ditto.
	(rep_stos): Ditto.
	(*rep_stosdi_rex64): Ditto.
	(*rep_stossi): Ditto.
	(*rep_stossi_rex64): Ditto.
	(*rep_stosqi): Ditto.
	(*rep_stosqi_rex64): Ditto.
	(cmpstrnsi): Do not generate cld insn.
	(cmpstrnqi_nz_1): Do not use DIRFLAG_REG.
	(*cmpstrnqi_nz_1): Ditto.
	(*cmpstrnqi_nz_rex_1): Ditto.
	(cmpstrnqi_1): Ditto.
	(*cmpstrnqi_1): Ditto.
	(*cmpstrnqi_rex_1): Ditto.
	(strlenqi_1): Ditto.
	(*strlenqi_1): Ditto.
	(*strlenqi_rex_1): Ditto.

	* config/i386/geode.md (shift): Do not depend on cld type attribute.
	* config/i386/pentium.md (pent_cld): Remove insn reservation.
	* config/i386/athlon.md (athlon_decode): Do not depend on cld
	type attribute.
	* config/i386/ppro.md (ppro_cld): Remove insn reservation.
	* config/i386/k6.md (k6_alux_only): Do not depend on cld type
	attribute.
	(k6_alux_only_load): Ditto.
	(k6_alux_only_store): Ditto.

	* config/i386/i386.c (ix86_expand_movmem): Remove cld_done boolean.
	Do not emit cld instruction.
	(ix86_expand_setmem): Ditto.
	(ix86_expand_strlen): Do not emit cld instruction.

2006-12-06  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (bfin_rtx_costs): Add a number of new cases, tweak
	old ones.

2006-12-06  Diego Novillo  <dnovillo@redhat.com>

	* gdbinit.in: Set complaints to 0.

2006-12-06  Jan Hubicka  <jh@suse.cz>

	* statistics.h (ALONE_PASS_MEM_STAT, ALONE_MEM_STAT_INFO,
	ALONE_MEM_STAT_DECL): New macros.
	* bitmap.h: Include statistics.h
	(struct bitmap_head_def): Add variant with pointer to bitmap descriptor.
	(bitmap_initialize_stat): Rename from bitmap_initialize; add statistics.
	(bitmap_obstack_alloc_stat, bitmap_gc_alloc_stat): Declare.
	* bitmap.c: Include hashtab.h
	(bitmap_descriptor): New.
	(bitmap_hash): New static variable
	(hash_descriptor, eq_descriptor, bitmap_descriptor, register_overhead):
	New static functions.
	(bitmap_register): New.
	(bitmap_element_free, bitmap_element_allocate, bitmap_elt_clear_from,
	bitmap_obstack_release): Do accounting.
	(bitmap_obstack_alloc_stat): Rename from bitmap_obstack_alloc ; do
	accounting.
	(bitmap_gc_alloc_stat): Likewise.
	(bitmap_obstack_free, bitmap_find_bit): Do statictics.
	(print_statistics, dump_bitmap_statistics): New functions.
	* toplev.c (finalize): Dump bitmap statistics.

2006-12-06  Bernd Schmidt  <bernd.schmidt@analog.com>

	* reload1.c (delete_output_reload): Count occurrences in
	CALL_INSN_FUNCTION_USAGE.
	* rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
	crashing at the end of the list.

2006-12-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
	Optimize to avoid marking more SMT's as used when they aren't.

2006-12-05  Eric Christopher  <echristo@apple.com>

	* config/i386/i386.c (x86_output_aligned_bss): Move out
	of COMMON_ASM_OP ifdef.

2006-12-05  Eric Christopher  <echristo@apple.com>

	* config/darwin.h (DARWIN_EXTRA_SPECS): New.
	(STARTFILE_SPEC): Use.
	(DARWIN_DYLIB1_SPEC): New.
	(DARWIN_CRT1_SPEC): New.
	* config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
	DARWIN_EXTRA_SPECS.
	* config/i386/darwin.h: Ditto.
	* config/rs6000/darwin.h: Ditto.

2006-12-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
	* tree-complex.c (pass_lower_complex): Ditto.
	* tree-ssa-ccp.c (pass_ccp): Ditto.
	(pass_store_ccp): Ditto.
	* tree-ssa-dom.c (pass_dominator): Ditto.
	(pass_phi_only_cprop): Ditto.
	* tree-sra.c (pass_sra): Ditto.
	* tree-ssa-forwprop.c (pass_forwprop): Ditto.
	* tree-flow.h (updating_used_alone): Remove.
	(updating_used_alone): Ditto.
	* tree-ssa-alias.c (updating_used_alone): Remove variable.
	(lhs_may_store_to): Remove function.
	(recalculate_used_alone): Ditto.
	(compute_may_aliases): Remove used_alone calculation.
	* tree.h (struct tree_memory_tag): Remove is_used_alone and
	old_used_alone. Remove SMT_USED_ALONE and SMT_OLD_USED_ALONE.
	* tree-pass.h (PROP_smt_usage): Remove.
	* passes.c (execute_todo): Remove used alone recalculation.
	(execute_one_pass): Ditto.
	* tree-ssa-operands.c (add_virtual_operand): Remove used_alone
	stuff.

2006-12-05  Brooks Moses  <brooks.moses@codesourcery.com>

	* doc/include/texinfo.tex: Update to version 2006-11-08.17.

2006-12-05  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/14784
	* tree-ssa-operands.c (access_can_touch_variable): Unrevert the fix.

2006-12-05  Aldy Hernandez  <aldyh@redhat.com>

	Merge from gimple-tuples-branch.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/s390/s390.c (s390_va_start): Replace MODIFY_EXPR with
	GIMPLE_MODIFY_STMT.
	(s390_gimplify_va_arg): Same.
	* config/sparc/sparc.c (sparc_gimplify_va_arg): Same.
	* config/sh/sh.c (sh_va_start): Same.
	(sh_gimplify_va_arg_expr): Same.
	* config/xtensa/xtensa.c (xtensa_va_start): Same.
	(xtensa_gimplify_va_arg_expr): Same.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Same.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Same.
	* config/mips/mips.c (mips_va_start): Same.
	(mips_gimplify_va_arg_expr): Same.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* Merge from mainline at revision 119445.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/spu/spu.c (spu_va_start): Change MODIFY_EXPR to
	GIMPLE_MODIFY_STMT.
	(spu_gimplify_va_arg_expr): Same.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Change uses of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
	(xstormy16_expand_builtin_va_arg): Same.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/frv/frv.c (frv_expand_builtin_va_start): Change MODIFY_EXPR
	to GIMPLE_MODIFY_STMT.

	2006-12-04  Aldy Hernandez  <aldyh@redhat.com>

	* config/alpha/alpha.c (va_list_skip_additions): Change all
	occurrences of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
	(alpha_va_start): Same.
	(alpha_gimplify_va_arg_1): Same.
	(alpha_gimplify_va_arg): Same.

	2006-12-01  Aldy Hernandez  <aldyh@redhat.com>

	* gimplify.c (gimplify_modify_expr): Remove FIXME comment.

	2006-12-01  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-loop-im.c: Rename all PROTECTED_TREE_OPERAND to
	GENERIC_TREE_OPERAND, and all PROTECTED_TREE_TYPE to
	GENERIC_TREE_TYPE.
	* tree-complex.c: Same.
	* tree-pretty-print.c: Same.
	* tree.c: Same.
	* tree.h: Same.
	* builtins.c: Same.
	* fold-const.c: Same.
	* tree-ssa-dom.c: Same.
	* tree-ssa-propagate.c: Same.
	* tree-ssa-alias.c: Same.
	* gimple-low.c: Same.
	* dwarf2out.c: Same.
	* c-pretty-print.c: Same.
	* gimplify.c: Same.
	* tree-inline.c: Same.
	* tree-outof-ssa.c: Same.
	* tree-ssa-structalias.c: Same.
	* tree-ssa-reassoc.c: Same.
	* stmt.c: Same.

	2006-11-16  Aldy Hernandez  <aldyh@redhat.com>

	* tree.c (build2_stat): Fix comment.

	2006-11-13  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-propagate.c (get_rhs): Use GIMPLE_MODIFY_STMT and
	TREE_OPERAND when appropriate.

	2006-11-04  Aldy Hernandez  <aldyh@redhat.com>

	* java/java-tree.h (lang_tree_node): Handle gimple tuples.
	(EXPR_WFL_EMIT_LINE_NOTE): Look inside base.
	(EXPR_WFL_LINECOL): Use EXPR_LOCUS macro instead of exp.locus.
	* java/java-gimplify.c (java_gimplify_expr): Comment on why we do
	not handle GIMPLE_MODIFY_STMT in the switch statement.
	(java_gimplify_modify_expr): Call build2 with GIMPLE_MODIFY_STMT.
	(java_gimplify_new_array_init): Same.

	2006-11-03  Aldy Hernandez  <aldyh@redhat.com>

	* gimplify.c (gimplify_omp_for): Allow gimple statements.
	* tree-outof-ssa.c (check_replaceable): Use PROTECTED_TREE_OPERAND.
	* fold-const.c (fold_binary): Allow gimple statements.
	(fold): Same.
	* fortran/trans-array.c (gfc_conv_descriptor_data_set_internal):
	Rename from gfc_conv_descriptor_data_set.
	Call gfc_add_modify instead of gfc_add_modify_expr.
	* fortran/trans-array.h (gfc_conv_descriptor_data_set_internal):
	Rename from gfc_conv_descriptor_data_set.
	(gfc_conv_descriptor_data_set): New macro.
	(gfc_conv_descriptor_data_set_tuples): New macros.
	* fortran/trans-openmp.c (gfc_omp_clause_default_ctor): Call
	gfc_conv_descriptor_data_set_tuples.
	* fortran/trans.c (gfc_add_modify): Rename from gfc_add_modify_expr.
	Generate GIMPLE_MODIFY_STMT when appropriate.
	* fortran/trans.h (gfc_add_modify): Rename from gfc_add_modify_expr.
	(gfc_add_modify_expr): New macro.
	(gfc_add_modify_stmt): New macro.
	* fortran/f95-lang.c (lang_tree_node): Handle gimple statements.

	2006-11-01  Aldy Hernandez  <aldyh@redhat.com>

	* Merge from mainline at revision 118200.

	2006-10-09  Aldy Hernandez  <aldyh@redhat.com>

	* tree-inline.c (copy_bb): Check for GIMPLE_MODIFY_STMT, and adjust
	accordingly.

	2006-10-09  Aldy Hernandez  <aldyh@redhat.com>

	* tree.h (TREE_CHAIN, TREE_TYPE): Add versions for non GCC or not
	enable checking.
	Also, add __extension__ to GCC versions.
	* tree-mudflap.c (mf_xform_derefs_1): Add parentheses around TREE_TYPE.
	* tree-inline.c (copy_tree_r): Initialize chain to assuage the warning
	patrol.

	2006-10-05  Aldy Hernandez  <aldyh@redhat.com>

	* tree-complex.c (expand_complex_libcall): Adjust for
	GIMPLE_MODIFY_STMT.
	(expand_complex_comparison): Same.
	* tree-pretty-print.c (dump_generic_node): Is_expr should include
	GIMPLE_STMT_P statements.
	* value-prof.c (tree_divmod_fixed_value_transform): Adjust for
	GIMPLE_MODIFY_STMT.
	(tree_mod_pow2_value_transform): Same.
	(tree_mod_subtract_transform): Same.
	* tree.c (build2_stat): Check for gimplified function in cfun.
	* tree.h (DECL_GIMPLIFIED): Delete.
	(struct tree_function_decl): Remove gimplified_flag.
	* omp-low.c (lower_omp_for): Adjust for GIMPLE_MODIFY_STMT.
	* cp/cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_copy_ctor): Same.
	(cxx_omp_clause_assign_op): Same.
	* c-pretty-print.c (pp_c_conditional_expression): Same.
	(pp_c_expression): Same.
	* langhooks.c (lhd_omp_predetermined_sharing): Same.
	* function.h (struct function): Add gimplified field.
	* tree-if-conv.c (add_to_dst_predicate_list): Adjust for
	GIMPLE_MODIFY_STMT.
	(find_phi_replacement_condition): Same.
	* gimplify.c (gimplify_modify_expr_to_memcpy): Same.
	(gimplify_modify_expr_to_memset): Same.
	(gimplify_init_ctor_eval_range): Same.
	(gimplify_modify_expr_complex_part): Same.
	(tree_to_gimple_tuple): Same.
	(gimplify_modify_expr): Same.
	(gimple_push_cleanup): Same.
	(gimplify_omp_for): Same.
	(gimplify_omp_atomic_pipeline): Same.
	(gimplify_omp_atomic_mutex): Same.
	(gimplify_expr): Same.
	(gimplify_one_sizepos): Same.
	(gimplify_function_tree): Same.
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Same.
	(vect_recog_widen_sum_pattern): Same.
	* tree-vect-transform.c (get_initial_def_for_reduction): Same.
	(vect_create_epilog_for_reduction): Same.
	(vectorizable_reduction): Same.

	2006-09-28  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-math-opts.c (replace_reciprocal): Use GIMPLE_STMT_OPERAND.
	* tree-if-conv.c (if_convertible_gimple_modify_stmt_p): Same.
	(ifc_temp_var): Same.
	* tree-vect-analyze.c (vect_determine_vectorization_factor): Check
	for gimple statements.
	(vect_analyze_operations): Same.
	(exist_non_indexing_operands_for_use_p): Use GIMPLE_STMT_OPERAND.
	* gimplify.c (gimplify_return_expr): Handle gimple statements.
	* lambda-code.c (can_put_in_inner_loop): Same.
	(can_put_after_inner_loop): Same.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
	(vect_create_data_ref_ptr): Same.
	(vect_init_vector): Same.
	(vect_get_vec_def_for_operand): Same.
	(vect_create_epilog_for_reduction): Same.
	(vectorizable_reduction): Same.
	(vectorizable_assignment): Same.
	(vectorizable_operation): Same.
	(vectorizable_load): Same.
	(vectorizable_condition): Same.
	* config/rs6000/rs6000.c (rs6000_va_start): Do not create MODIFY_EXPRs.
	(rs6000_gimplify_va_arg): Same.

	2006-09-25  Aldy Hernandez  <aldyh@redhat.com>

	* tree-vrp.c (simplify_div_or_mod_using_ranges): Use
	GIMPLE_STMT_OPERAND.
	(simplify_abs_using_ranges): Same.
	* tree-complex.c (expand_complex_operations_1): Use
	PROTECTED_TREE_OPERAND.
	* tree-ssa-loop-niter.c (simplify_replace_tree): Check for gimple
	stmt.
	(get_val_for): Use GIMPLE_STMT_OPERAND.
	* tree-tailcall.c (adjust_accumulator_values): Same.
	(adjust_return_value): Same.
	* tree.c (walk_tree): Use IS_GIMPLE_STMT_CODE_CLASS on default
	case.  Remove special case for tcc_gimple_stmt.
	* tree.h (CAN_HAVE_LOCATION_P): New.
	* tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Check for
	GIMPLE_STMT_P.
	* tree-stdarg.c (va_list_counter_bump): Use GIMPLE_STMT_OPERAND.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Same.
	* tree-nrv.c (execute_return_slot_opt): Same.
	* tree-ssa-alias.c (count_uses_and_derefs): Check for GIMPLE_STMT_P.
	* tree-vn.c (set_value_handle): Same.
	(get_value_handle): Same.
	* c-decl.c (add_stmt): Use CAN_HAVE_LOCATION_P.
	* tree-vectorizer.c (find_loop_location): Same.
	* c-typeck.c (c_process_expr_stmt): Same.
	(c_finish_stmt_expr): Same.
	* gimplify.c (should_carry_locus_p): Same.
	(tree_to_gimple_tuple): Delete definition and use of unecessary
	variable save_tree_block.
	* tree-ssa-pre.c (phi_translate): Check for GIMPLE_STMT_P.
	(create_expression_by_pieces): Use GIMPLE_STMT_OPERAND.
	(realify_fake_stores): Same.
	* tree-ssa-forwprop.c (forward_propagate_addr_into_variable_arr):
	Use TREE_OPERAND.
	* tree-inline.c (copy_body_r): Check for EXPR_P and GIMPLE_STMT_P.
	(copy_tree_r): Check for IS_GIMPLE_STMT_CODE_CLASS.
	* tree-cfg.c (move_stmt_r): Use EXPR_P.  Check for GIMPLE_STMT_P.
	* c-parser.c (c_parser_typeof_specifier): Use CAN_HAVE_LOCATION_P.
	(c_parser_statement_after_labels): Same.
	(c_parser_paren_condition): Same.
	(c_parser_for_statement): Same.
	(c_parser_omp_for_loop): Same.
	* tree-ssa-reassoc.c (linearize_expr): Use GIMPLE_STMT_OPERAND.
	(linearize_expr_tree): Same.
	* dwarf2out.c (reference_to_unused): Check for GIMPLE_STMT_P.
	* function.c (instantiate_expr): Same.

	2006-09-22  Aldy Hernandez  <aldyh@redhat.com>

	* tree.c (expr_location): Use GIMPLE_STMT_LOCUS.
	(set_expr_location): Same.
	(expr_locus): Same.
	(set_expr_locus): Same.
	(expr_filename): Same.
	(expr_lineno): Same.
	(tree_block): Use GIMPLE_STMT_BLOCK.
	(protected_tree_operand): Use GIMPLE_STMT_OPERAND.
	* tree.h (struct gimple_stmt): Remove prev and next.
	(GIMPLE_STMT_OPERAND_CHECK): New.
	(TREE_TO_GIMPLE_STMT): Delete.
	(GIMPLE_STMT_TO_TREE): Delete.
	(GIMPLE_STMT_OPERAND): Use union, not cast.
	(GIMPLE_STMT_LOCUS): New.
	(GIMPLE_STMT_BLOCK): New.
	* gimplify.c (tree_to_gimple_tuple): Use union.  Do not cast
	to tree_base.
	* tree-cfg.c (verify_gimple_tuples_1): Call gcc_unreachable.

	2006-09-21  Aldy Hernandez  <aldyh@redhat.com>

	* tree-into-ssa.c (REGISTER_DEFS_IN_STMT): Change common.base
	to base.
	* tree-tailcall.c (adjust_return_value): Same.
	* tree.c (tree_code_size): Remove GIMPLE_STATEMENT_LIST case.
	(copy_node_stat): Change common.base to base.
	(tree_node_structure): Return TS_GIMPLE_STATEMENT for tcc_gimple_stmt.
	Remove GIMPLE_STATEMENT_LIST case.
	* tree.h (struct gimple_stmt): Make operands of type tree.
	(TREE_CODE, TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
	CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
	TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
	TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
	TYPE_CACHED_VALUES_P, TREE_SIDE_EFFECTS, FORCED_LABEL,
	TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
	TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
	BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN, TREE_USED,
	TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT, DECL_BY_REFERENCE,
	CALL_FROM_THUNK_P, TYPE_ALIGN_OK, TREE_PRIVATE, TREE_PROTECTED,
	TREE_DEPRECATED, IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
	TREE_LANG_FLAG_*, SSA_NAME_OCCURS_IN_ABNORMAL_PHI,
	SSA_NAME_IN_FREE_LIST, TYPE_VOLATILE, TYPE_READONLY, BINFO_VIRTUAL_P):
	Change common.base to base.
	(GIMPLE_STATEMENT_LIST*): Remove.
	(union tree_node): Add base.  Remove gimple_statement_list.
	Remove pointer from gstmt.
	* tree-ssa-propagate.c (set_rhs): Change common.base to base.
	* treestruct.def: Add TS_BASE.  Remove TS_GIMPLE_STATEMENT_LIST.
	* tree-vn.c (vn_compute): Change common.base to base.
	* tree-eh.c (verify_eh_throw_stmt_node): Same.
	* tree-flow-inline.h (var_ann): Same.
	(function_ann): Same.
	(stmt_ann): Same.
	(mark_non_addressable): Same.
	* gimplify.c (tree_to_gimple_tuple): Same.
	* tree.def (DEFTREECODE): Remove GIMPLE_STATEMENT_LIST.
	* tree-dfa.c (create_var_ann): Change common.base to base.
	(create_function_ann): Same.
	(create_stmt_ann): Same.
	(create_tree_ann): Same.
	(collect_dfa_stats_r): Same.
	* tree-ssa-pre.c (NECESSARY): Change common.base to base.
	* tree-ssa-dce.c (NECESSARY): Same.
	* tree-ssa.c (delete_tree_ssa): Same.
	* tree-optimize.c (execute_free_cfg_annotations): Same.
	* tree-flow.h: Same.

	2006-09-19  Aldy Hernandez  <aldyh@redhat.com>

	* tree.c (tree_code_size): Handle GIMPLE_STATEMENT_LIST.
	(tree_node_structure): Handle GIMPLE_STATEMENT_LIST and
	GIMPLE_MODIFY_STMT.
	* tree.h (struct gimple_stmt): Add prev and next fields.
	(GIMPLE_STMT_TO_TREE): Cast, do not call GIMPLE_STMT_CHECK.
	(GIMPLE_STATEMENT_LIST_HEAD): New.
	(GIMPLE_STATEMENT_LIST_TAIL): New.
	(struct gimple_statement_list): New.
	(union tree_node): Add gimple_stmt_list and gstmt.
	* treestruct.def: Add TS_GIMPLE_STATEMENT_LIST, TS_GIMPLE_STATEMENT.
	* tree.def: Add GIMPLE_STATEMENT_LIST.

	2006-09-06  Aldy Hernandez  <aldyh@redhat.com>

	* tree-dump.c (dequeue_and_dump): Handle GIMPLE_MODIFY_STMT.
	* tree-vrp.c (build_assert_expr_for): Change uses of
	MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
	(find_assert_locations): Same.
	(remove_range_assertions): Same.
	(stmt_interesting_for_vrp): Same.
	(vrp_visit_assignment): Same.
	(vrp_visit_stmt): Same.
	(simplify_cond_using_ranges): Same.
	* tree-into-ssa.c (REGISTER_DEFS_IN_THIS_STMT): Adjust for new
	tree structure.
	* tree-ssa-loop-im.c (movement_possibility): Change uses of
	MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
	(stmt_cost): Same.
	(determine_invariantness_stmt): Same.
	(schedule_sm): Same.
	(gather_mem_refs_stmt): Same.
	* tree-complex.c (init_dont_simulate_again): Same.
	(complex_visit_stmt): Same.
	(set_component_ssa_name): Same.
	(expand_complex_move): Same.
	(expand_complex_div_wide): Same.
	(expand_complex_comparison): Same.
	(expand_complex_operations_1): Same.
	* tree-ssa-loop-niter.c (expand_simple_operations): Same.
	(chain_of_csts_start): Same.
	(infer_loop_bounds_from_undefined): Same.
	* tree-pretty-print.c (dump_generic_node): Same.
	(op_prio): Same.
	(op_symbol_1): Same.
	* tree-ssa-loop-manip.c (create_iv): Same.
	* value-prof.c (tree_divmod_fixed_value): Same.
	(tree_divmod_fixed_value_transform): Same.
	(tree_mod_pow2): Same.
	(tree_mod_pow2_value_transform): Same.
	(tree_mod_subtract): Same.
	(tree_mod_subtract_transform): Same.
	(tree_divmod_values_to_profile): Same.
	* tree-tailcall.c (process_assignment): Same.
	(find_tail_calls): Same.
	(adjust_accumulator_values): Same.
	(adjust_return_value): Same.
	(eliminate_tail_call): Same.
	* tree.c (tree_code_size): Handle tcc_gimple_stmt.
	(make_node_stat): Same.
	(copy_node_stat): Handle gimple tuples.
	(expr_align): Handle GIMPLE_MODIFY_STMT.  Abort on MODIFY_EXPR.
	(tree_node_structure): Handle tcc_gimple_stmt.
	(build2_stat): Abort on MODIFY_EXPR after gimplification.  Handle
	tcc_gimple_stmt.
	(build2_gimple_stat): New.
	(expr_location): New.
	(set_expr_location): New.
	(expr_has_location): New.
	(expr_locus): New.
	(set_expr_locus): New.
	(expr_filename): New.
	(expr_lineno): New.
	(walk_tree): Handle tcc_gimple_stmt.
	(tree_block): New.
	(protected_tree_operand): New.
	(protected_tree_type): New.
	(tree_code_kind): Add gimple statements.
	* tree.h (tree_code_class): Add tcc_gimple_stmt.
	(IS_GIMPLE_STMT_CODE_CLASS): New.
	(struct tree_base): New.
	(struct tree_common): Shrink.
	(struct gimple_stmt): New.
	(struct gimple_expr): New.
	(TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
	CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
	TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
	TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
	TYPE_CACHED_VALUES_P, SAVE_EXPR_RESOLVED_P, TREE_SIDE_EFFECTS,
	FORCED_LABEL, TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
	TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
	BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN,
	TREE_USED, TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT,
	DECL_BY_REFERENCE, CALL_FROM_THUNK_P, TYPE_ALIGN_OK,
	TREE_PRIVATE, TREE_PROTECTED, TREE_DEPRECATED,
	IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
	TREE_LANG_FLAG_[0-6], SSA_NAME_CHECK, SSA_NAME_IN_FREE_LIST,
	TYPE_VOLATILE, TYPE_READONLY, TREE_VISITED, BINFO_VIRTUAL_P):
	Adjust for new `common' layout.
	(struct tree_function_decl): Add gimplified_flag.
	(DECL_GIMPLIFIED): NEW.
	(EXPR_LOCATION, SET_EXPR_LOCUS, EXPR_FILENAME, EXPR_LOCUS,
	SET_EXPR_LOCUS, SET_EXPR_LOCATION, EXPR_LINENO,
	EXPR_HAS_LOCATION): Call corresponding function.
	(GIMPLE_STMT_CHECK): New.
	(TREE_OPERAND_CHECK, TREE_TYPE, TREE_CHAIN): Abort on gimple tuples.
	(TREE_BLOCK): Call tree_block.
	(GIMPLE_STMT_P): New.
	(GIMPLE_TUPLE_P): New.
	(TREE_TO_GIMPLE_STMT): New.
	(GIMPLE_STMT_TO_TREE): New.
	(GIMPLE_STMT_OPERAND): New.
	(GIMPLE_TUPLE_HAS_LOCUS_P): New.
	(PROTECTED_TREE_OPERAND): New.
	(PROTECTED_TREE_TYPE): New.
	(build2_gimple_stat): Protoize.
	(build2_gimple): New.
	(expr_location): Protoize.
	(set_expr_location): Protoize.
	(expr_has_location): Protoize.
	(expr_locus): Protoize.
	(set_expr_locus): Protoize.
	(expr_filename): Protoize.
	(expr_lineno): Protoize.
	(tree_block): Protoize.
	(protected_tree_operand): Protoize.
	(protected_tree_type): Protoize.
	(enum tree_node_kind): Add gimple_stmt_kind.
	* c-decl.c (union lang_tree_node): Tuples do not have a
	TREE_CHAIN.
	* ipa-cp.c (constant_val_insert): Change uses of MODIFY_EXPR to
	GIMPLE_MODIFY_STMT and adjust accordingly.
	* tree-scalar-evolution.c (follow_ssa_edge): Same.
	(interpret_condition_phi): Same.
	(pointer_used_p): Same.
	(analyze_scalar_evolution_1): Same.
	(scev_const_prop): Same.
	(interpret_rhs_modify_stmt): Rename from
	interpret_rhs_modify_expr.
	* builtins.c (std_expand_builtin_va_start): Change uses of
	MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
	(std_gimplify_va_arg_expr): Same.
	(expand_builtin_va_copy): Same.
	(integer_valued_real_p): Same.
	* fold-const.c (maybe_lvalue_p): Same.
	(fold_unary): Same.
	(tree_expr_nonnegative_p): Same.
	(tree_expr_nonzero_p): Same.
	* omp-low.c (extract_omp_for_data): Same.
	(lower_rec_input_clauses): Same.
	(lower_reduction_clauses): Same.
	(lower_copyprivate_clauses): Same.
	(lower_send_clauses): Same.
	(lower_send_shared_vars): Same.
	(expand_parallel_call): Same.
	(expand_omp_parallel): Same.
	(expand_omp_for_generic): Same.
	(expand_omp_for_static_nochunk): Same.
	(expand_omp_for_static_chunk): Same.
	(expand_omp_sections): Same.
	(lower_omp_single_copy): Same.
	(lower_omp_parallel): Same.
	* tree-ssa-dse.c (memory_address_same): Same.
	(dse_optimize_stmt): Same.
	* ipa-reference.c (scan_for_static_refs): Same.
	* tree-gimple.c (is_gimple_reg_rhs): Same.
	(get_call_expr_in): Same.
	(recalculate_side_effects): Same.
	* cgraphunit.c (cgraph_create_edges): Same.
	* tree-ssa-copyrename.c (rename_ssa_copies): Same.
	* tree-ssa-ccp.c (get_default_value): Same.
	(likely_value): Same.
	(visit_assignment): Same.
	(ccp_visit_stmt): Same.
	(get_maxval_strlen): Same.
	(ccp_fold_builtin): Same.
	* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Same.
	(find_givs_in_stmt): Same.
	(find_interesting_uses_op): Same.
	(find_interesting_uses_stmt): Same.
	(rewrite_use_nonlinear_expr): Same.
	* ipa-pure-const.c (scan_function): Same.
	* tree-stdarg.c (va_list_counter_bump): Same.
	(check_all_va_list_escapes): Same.
	(execute_optimize_stdarg): Same.
	* tree-ssa-math-opts.c (compute_merit): Same.
	(insert_reciprocals): Same.
	(execute_cse_reciprocals): Same.
	* tree-ssa-dom.c (initialize_hash_element): Same.
	(simple_iv_increment_p): Same.
	(record_equivalences_from_stmt): Same.
	(optimize_stmt): Same.
	(remove_stmt_or_phi): Same.
	(get_rhs_or_phi_arg): Same.
	(get_lhs_or_phi_result): Same.
	(propagate_rhs_into_lhs): Same.
	* tree-nrv.c (tree_nrv): Same.
	(execute_return_slot_opt): Same.
	* tree-ssa-propagate.c (get_rhs): Same.
	(set_rhs): Same.
	(stmt_makes_single_load): Same.
	(stmt_makes_single_store): Same.
	(replace_vuses_in): Same.
	(fold_predicate_in): Same.
	(substitute_and_fold): Same.
	* tree-ssa-alias.c (compute_call_clobbered): Same.
	(recalculate_used_alone): Same.
	(count_uses_and_derefs): Same.
	(is_escape_site): Same.
	(find_used_portions): Same.
	* gimple-low.c (lower_stmt): Same.
	(block_may_fallthru): Same.
	(lower_return_expr): Same.
	* tree-ssa-sink.c (is_hidden_global_store): Same.
	(statement_sink_location): Same.
	* dwarf2out.c (loc_descriptor_from_tree_1): Same.
	* expr.c (safe_from_p): Same.
	(expand_expr_real): Same.
	(expand_expr_real_1): Same.
	* tree-ssa-loop-ivcanon.c (empty_loop_p): Same.
	* predict.c (expr_expected_value): Same.
	(strip_builtin_expect): Same.
	(apply_return_prediction): Same.
	(tree_bb_level_predictions): Same.
	(tree_estimate_probability): Same.
	* tree-vn.c (vn_compute): Same.
	* tree-eh.c (add_stmt_to_eh_region_fn): Same.
	(remove_stmt_from_eh_region_fn): Same.
	(do_return_redirection): Same.
	(honor_protect_cleanup_actions): Same.
	(lower_try_finally_switch): Same.
	(lower_eh_constructs_1): Same.
	(tree_could_throw_p): Same.
	(verify_eh_throw_stmt_node): Same.
	* function.c (gimplify_parameters): Same.
	* tree-vectorizer.c (vect_is_simple_use): Same.
	(vect_is_simple_reduction): Same.
	* ipa-type-escape.c (scan_for_refs): Same.
	* tree-if-conv.c (tree_if_conversion): Same.
	(tree_if_convert_stmt): Same.
	(if_convertible_gimplify_modify_stmt_p): Rename from
	if_convertible_modify_expr_p.
	(if_convertible_stmt_p): Adjust for GIMPLE_MODIFY_STMT.
	(ifc_temp_var): Same.
	(replace_phi_with_cond_modify_stmt): Rename from
	replace_phi_with_cond_modify_expr.
	(process_phi_nodes): Call replace_phi_with_cond_modify_stmt.
	* tree.def (DEFTREECODE): Add GIMPLE_MODIFY_STMT.
	* tree-data-ref.c (find_data_references_in_loop): Adjust for
	GIMPLE_MODIFY_STMT.
	* tree-flow-inline.h (var_ann): Same.
	(function_ann): Same.
	(stmt_ann): Same.
	(mark_non_addressable): Same.
	* tree-vect-analyze.c (vect_determine_vectorization_factor): Same.
	* gimplify.c (tree_to_gimple_tuple): New.
	(build_stack_save_restore): Adjust for GIMPLE_MODIFY_STMT.
	(gimplify_return_expr): Same.
	(gimplify_decl_expr): Same.
	(gimplify_self_mod_expr): Same.
	(gimplify_cond_expr): Same.
	(gimplify_init_constructor): Same.
	(gimplify_modify_expr): Same.
	(gimplify_expr): Same.
	(gimplify_function_tree): Same.
	(force_gimple_operand): Same.
	* tree-ssa-phiopt.c (conditional_replacement): Same.
	(minmax_replacement): Same.
	(abs_replacement): Same.
	* tree-dfa.c (create_var_ann): Same.
	(create_function_ann): Same.
	(create_stmt_ann): Same.
	(create_tree_ann): Same.
	(collect_dfa_stats_r): Same.
	* tree-ssa-pre.c (find_or_generate_expression): Same.
	(create_expression_by_pieces): Same.
	(try_look_through_load): Same.
	(insert_fake_stores): Same.
	(realify_fake_stores): Same.
	(compute_avail): Same.
	(eliminate): Same.
	(init_pre): Same.
	(poolify_modify_stmt): Rename from poolify_modify_stmt.
	Adjust for GIMPLE_MODIFY_STMT.
	(NECESSARY): Adjust for new `common' layout.
	* tree-ssa-live.c (build_tree_conflict_graph): Adjust for
	GIMPLE_MODIFY_STMT.
	* tree-sra.c (sra_walk_modify_stmt): Rename from
	sra_walk_modify_expr.
	(sra_walk_function): Adjust for GIMPLE_MODIFY_STMT.
	(generate_copy_inout): Same.
	(generate_element_copy): Same.
	(generate_element_zero): Same.
	(scalarize_copy): Same.
	* tree-mudflap.c (mf_decl_cache_locals): Same.
	(mf_build_check_statement_for): Same.
	(mf_xform_derefs): Same.
	* ipa-prop.c (ipa_method_modify_stmt): Same.
	* print-tree.c (print_node): Handle gimple tuples.
	Add case for tcc_gimple_stmt.
	* tree-ssa-copy.c (stmt_may_generate_copy): Adjust for
	GIMPLE_MODIFY_STMT.
	(copy_prop_visit_assignment): Same.
	(copy_prop_visit_stmt): Same.
	(init_copy_prop): Same.
	* tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): Same.
	(forward_propagate_into_cond_1): Same.
	(find_equivalent_equality_comparison): Same.
	(tidy_after_forward_propagate_addr): Same.
	(forward_propagate_addr_expr_1): Same.
	(simplify_not_neg_expr): Same.
	(simplify_switch_expr): Same.
	* tree-ssa-dce.c (find_pdom): Same.
	(mark_stmt_if_obviously_necessary): Same.
	(NECESSARY): Adjust for new `common' layout.
	* tree-flow.h: Same.
	* tree-vect-patterns.c (widened_name_p): Adjust for
	GIMPLE_MODIFY_STMT.
	(vect_recog_dot_prod_pattern): Same.
	(vect_recog_widen_sum_pattern): Same.
	(vect_pattern_recog_1): Same.
	* tree-nested.c (init_tmp_var): Same.
	(save_tmp_var): Same.
	(walk_stmts): Same.
	(convert_call_expr): Same.
	(finalize_nesting_tree_1): Same.
	* tree-ssa.c (verify_ssa): Same.
	(delete_tree_ssa): Same.
	* lambda-code.c (lbv_to_gcc_expression): Same.
	(lle_to_gcc_expression): Same.
	(lambda_loopnest_to_gcc_loopnest): Same.
	(can_put_in_inner_loop): Same.
	(can_convert_to_perfect_nest): Same.
	(perfect_nestify): Same.
	* tree-ssa-loop-prefetch.c (gather_memory_references): Same.
	* tree-inline.c (copy_body_r): Same.
	(setup_one_parameter): Same.
	(initialize_inlined_parameters): Same.
	(estimate_num_insns_1): Same.
	(expand_call_inline): Same.
	(gimple_expand_calls_inline): Same.
	(copy_tree_r): Same.
	* tree-optimize.c (execute_free_cfg_annotations): Same.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
	(vect_align_data_ref): Same.
	(vect_create_data_ref_ptr): Same.
	(vect_init_vector): Same.
	(vect_create_epilog_for_reduction): Same.
	(vectorizable_reduction): Same.
	(vectorizable_assignment): Same.
	(vectorizable_operation): Same.
	(vectorizable_store): Same.
	(vectorizable_load): Same.
	(vectorizable_live_operation): Same.
	(vectorizable_condition): Same.
	(vect_generate_tmps_on_preheader): Same.
	(vect_create_cond_for_align_checks): Same.
	* tree-object-size.c (collect_object_sizes_for): Same.
	(check_for_plus_in_loops_1): Same.
	(check_for_plus_in_loops): Same.
	* tree-outof-ssa.c (insert_copy_on_edge): Same.
	(replace_use_variable): Same.
	(check_replaceable): Same.
	(rewrite_trees): Same.
	(identical_copies_p): Same.
	(insert_backedge_copies): Same.
	* tree-profile.c (tree_gen_edge_profiler): Same.
	* tree-vect-generic.c (expand_vector_operations_1): Same.
	* tree-ssa-structalias.c (update_alias_info): Same.
	(find_func_aliases): Same.
	* tree-cfg.c (factor_computed_gotos): Same.
	(make_edges): Same.
	(make_goto_expr_edges): Same.
	(tree_merge_blocks): Same.
	(remove_useless_stmts_cond): Same.
	(remove_useless_stmts_1): Same.
	(tree_find_edge_insert_loc): Same.
	(verify_expr): Same.
	(gimplify_val): Same.
	(verify_gimple_tuples_1): New.
	(verify_gimple_tuples): New.
	(verify_stmts): Call verify_gimple_tuples.
	* tree-ssa-reassoc.c (get_rank): Adjust for GIMPLE_MODIFY_STMT.
	(get_unary_op): Same.
	(linearize_expr): Same.
	(get_single_immediate_use): Same.
	(negate_value): Same.
	(should_break_up_subtract): Same.
	(break_up_subtract): Same.
	(repropagate_negates): Same.
	(break_up_subtract_bb): Same.
	(reassociate_bb): Same.
	* config/i386/i386.c (ix86_va_start): Same.
	(ix86_gimplify_va_arg): Same.
	* stmt.c (expand_expr_stmt): Same.
	(warn_if_unused_value): Same.
	(expand_return): Same.
	* tree-ssanames.c (make_ssa_name): Same.
	* tree-ssa-threadedge.c (lhs_of_dominating_assert): Same.
	* tree-ssa-operands.c (finalize_ssa_defs): Same.
	(add_virtual_operand): Same.
	(get_expr_operands): Same.
	(parse_ssa_operands): Same.
	(get_modify_stmt_operands): Rename from get_modify_expr_operands.

2006-12-05  H.J. Lu  <hongjiu.lu@intel.com>

	* config.host: Remove extra blank line.

2006-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config.host (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if
	target is also an x86 variant.

2006-12-05  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
	(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
	(ix86_builtin_vectorized_function): New function to vectorize
	sqrt.

2006-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (output_file_start): Fix comment which referred to
	ia64_override_options.

2006-12-04  Jan Hubicka  <jh@suse.cz>

	* cfgexpand.c (expand_one_var): Guard expand_one_stack_var by
	really_expand.

2006-12-04  Bernd Schmidt  <bernd.schmidt@analog.com>

	* rtlanal.c (note_uses): Deal with SEQUENCEs.
	* config/bfin/bfin.c: Include "timevar.h".
	(bfin_flag_schedule_insns2, splitting_for_sched,
	bfin_flag_var_tracking): New variables.
	(print_operand): Handle '%!'.
	(override_options): Disable normal sched2 pass, instead set
	bfin_flag_schedule_insns2 for reorg to handle it.
	(output_file_start): Likewise for var-tracking.
	(bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
	(gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
	New functions.
	(bfin_reorg): Do second scheduling pass here, and call
	bfin_gen_bundles.  Use type_for_anomaly and trapping_loads_p instead
	of examining insns directly.  If bfin_flag_var_tracking, call
	var-tracking pass when done with everything else.
	* config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
	* config/bfin/bfin.md (UNSPEC_32BIT): New constant.
	(movsi_insn32): New pattern, with two new splits to create it
	before the final scheduling pass.
	(neghi2): Not a dsp32 insn, rather alu0.
	(movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
	movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
	extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
	mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
	ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
	movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
	movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
	ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
	addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
	subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
	addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
	flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
	flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
	flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
	flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
	flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
	mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
	lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
	variants instead of ';'.
	(ror_one, rol_one): Likewise.  Make them dsp32 insns.
	(ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
	(align8, align16, align24): Now named patterns; also using '%!'.
	(mnop): New insn.

2006-12-05  Kazu Hirata  <kazu@codesourcery.com>

	* config/i386/darwin.h, config/spu/spu.c, tree-ssa-live.c,
	tree-vect-generic.c, tree-vect-transform.c: Fix comment typos.

2006-12-04  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu-protos.c (spu_split_address): Add.
	* config/spu/spu.c (spu_split_address): Add.
	(print_operand): Handle HIGH.
	(spu_legitimate_address):  Don't test for aligned CONST.
	(spu_expand_mov):  Don't split addresses here.
	* config/spu/constraints.md (A): Don't test legitimate_const.
	* config/spu/spu.md: Add split of movsi patterns for PIC mode.
	(ceq_di): Use correct predicates.

2006-12-04  Eric Christopher  <echristo@apple.com>

	* config/darwin.h: Update copyright notice.
	* config/i386/darwin.h: Ditto.

2006-12-04  Jan Hubicka  <jh@suse.cz>

	* builtins.c (fold_builtin_memory_op): Check that expr_size match.
	* explow.c (expr_size, int_expr_size): Assert that size is non_NULL.

2006-12-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
	set_used_smts.
	* tree-ssa-structalias.c (set_used_smts): Export.
	(find_what_p_points_to): Don't call set_used_smts here.
	* tree-ssa-structalias.h (set_used_smts): Add prototype.

2006-12-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_may_aliases):
	Compute flow sensitive before flow insensitive.
	(compute_flow_sensitive_aliasing): Don't try to add
	a symbol memory tag to itself.

	* alias.h (alias_set_subset_of): New prototype.

	* alias.c (alias_set_subset_of): New function.

	* tree-ssa-structalias.c: Update comments.
	(struct variable_info): Add finished_solution.
	(new_varinfo): Set finished solution to NULL.
	(var_escaped_vars): Remove.
	(escaped_vars_tree): Remove.
	(escaped_vars_id): Remove.
	(nonlocal_vars_id): Remove.
	(constraint_expr_type): Add INCLUDES.
	(graph_size): Removed.
	(dump_constraint): Support INCLUDES.
	(build_constraint_graph): Ditto.
	(collapse_nodes): Add merge_solutions argument.
	Don't merge attributes.
	(process_unification_queue): Just use collapse_nodes.
	(perform_var_substitution): Update call to collapse_nodes.
	(get_constraint_exp_from_ssa_var): Use INCLUDES.
	(process_constraint): Fix non-field sensitive handling
	Handle includes.
	(get_constraint_for): Use INCLUDES.
	(make_constraint_from_anything): Renamed from
	make_constraint_from_escaped.
	(make_constraint_to_escaped): Removed.
	(find_global_initializers): Removed.
	(create_variable_info_for): Do not make constraints to escaped
	vars anymore.
	(dump_solution_for_var): Don't print out the equivalent points-to
	sets, just use the name of the variable it shares it with.
	(intra_create_variable_infos): Use INCLUDES.
	Change nonlocal variable sets to anything sets.
	(init_base_vars): Remove escaped_vars and nonlocal_var
	initialization.
	(find_escape_constraints): Removed.
	(delete_points_to_sets): Remove dead code.
	(used_smt_calculated): New variable.
	(set_used_smts): New function.
	(merge_smts_into): New function.
	(find_what_p_points_to): Modify to use SMTs.
	(create_nonlocal_var): Remove.

	* tree-ssa-operands.c (access_can_touch_variable): Remove
	reference to nonlocal_all.

	* tree-ssa.c (verify_name_tags): Remove.

2006-12-04  Carlos O'Donell  <carlos@codesourcery.com>

	* config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
	(__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.

2006-12-04  Andrew MacLeod  <amacleod@redhat.com>

	* tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
	* tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
	(add_livein_if_notdef): Delete.
	(loe_visit_block): New.  Propogate live on entry info for a block into
	each predecessor.  If it changes, make sure it is visited again.
	(live_worklist): Visit every block and update the live on entry info
	for preds.  Iterate over any that changed.
	(set_var_live_on_entry): Populate the live on entry blocks with bits
	based on the immediate uses of a var.
	(calculate_live_on_entry): Remove.
	(calculate_live_on_exit): Calculate live on exit based on the newly
	oriented live on entry bits.
	(calculate_live_ranges): Build live on entry and exit vectors.
	(dump_live_info): Use new orientation of live on entry bitmaps.
	(verify_live_on_entry): New.  Split out verification code from old
	calculate_live_on_entry routine.
	* tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
	(live_entry_blocks): Rename to live_on_entry and return bitmap for a
	basic_block instead of for a partition.
	(live_merge_and_clear): Add asserts.
	(make_live_on_entry): Set partition bit in basic block vector.

2006-12-04  Jakub Jelinek  <jakub@redhat.com>

	PR libgomp/29947
	* omp-low.c (expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk): Do all arithmetics in signed rather than
	unsigned type.

	PR middle-end/29965
	* omp-low.c (determine_parallel_type): Don't try to optimize combined
	parallels if region->exit or region->inner->exit is NULL.
	(expand_omp_parallel): Handle NULL region->exit even if cfg is already
	built.
	(expand_omp_for_generic): Handle NULL region->cond and region->exit.
	(expand_omp_for): Use expand_omp_for_generic if either region->cond
	or region->exit is NULL.
	(expand_omp_sections): Handle NULL region->cond or region->exit.
	(expand_omp_synch):

2006-12-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
	* config/sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.

2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	* tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
	TYPE_MAX_VALUE for scalar types here but...
	(walk_tree): ...there instead.  Return NULL_TREE if the TYPE_DECL
	is attached an error mark, and the return value of the callback
	if it is not NULL_TREE.

2006-12-04  Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.md (_mulv4si3): Remove unused local variables.

2006-12-03  Eric Christopher  <echristo@apple.com>

	PR target/24598
	* config/t-slibgcc-darwin: Pass -install_name.
	* config/darwin.h (LINK_COMMAND_SPEC): Remove use of
	libtool. Only pass through options that the linker recognizes.
	(LINK_SPEC): Update comment. Translate options.
	(STARTFILE_SPEC): Add dylib1.o for shared libraries.
	* config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.

2006-12-03  Dorit Nuzman  <dorit@il.ibm.com>

	* config/spu/spu.md (smaxv4sf3, sminv4sf3): New.

2006-12-03  Uros Bizjak  <ubizjak@gmail.com>

	PR target/30041
	* config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
	operands[1] in insn constraint.  Correct type attribute to sselog1.

2006-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/30040
	* config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
	(bit_SSSE3): New.
	(host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
	processor detection.

	* config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
	-march=native if there is no -mtune=*.

	* config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
	coretypes.h.

2006-12-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/install.texi: Update recommended MPFR version.  Remove
	obsolete reference to cumulative patch.

2006-12-02  Lee Millward  <lee.millward@codesourcery.com>

	PR c/27953
	* c-decl.c (store_parm_decls_oldstyle): Robustify.

2006-11-30  Jan Hubicka  <jh@suse.cz>
	    Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.c (pentium4_cost, nocona_cost): Update
	32bit memcpy/memset decriptors.
	(decide_alg): With -minline-all-stringops and sizes that are best
	to be copied via libcall still work hard enough to pick non-libcall
	strategy.

2006-12-02  Kazu Hirata  <kazu@codesourcery.com>

	* doc/extend.texi, doc/invoke.texi, doc/md.texi: Fix typos.

	* builtins.c, cfgloop.h, cgraph.h, config/arm/arm.c,
	config/i386/i386.c, config/i386/i386.h, config/mips/mips.h,
	config/rs6000/cell.md, config/rs6000/rs6000.c, config/sh/sh.c,
	config/sh/sh4-300.md, config/spu/spu-builtins.def,
	config/spu/spu-c.c, config/spu/spu-modes.def,
	config/spu/spu.c, config/spu/spu.md,
	config/spu/spu_internals.h, config/spu/vmx2spu.h,
	fold-const.c, fwprop.c, predict.c, tree-data-ref.h,
	tree-flow.h, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
	tree-ssa-pre.c, tree-vect-analyze.c, tree-vect-transform.c,
	tree-vectorizer.c, tree-vrp.c: Fix comment typos.  Follow
	spelling conventions.

	* config/i386/i386.c: Fix a comment typo.

2006-12-01  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/spu.c (spu_immediate): Remove trailing comma.
	(reloc_diagnostic): Call warning when -mwarn-reloc is specified.
	* config/spu/spu.md: (zero_extendhisi2): Expand instead of split for
	better optimization.
	(floatv4siv4sf2): New.
	(fix_truncv4sfv4si2): New.
	(floatunsv4siv4sf2): New.
	(fixuns_truncv4sfv4si2): New.
	(addv16qi3): New.
	(subv16qi3): New.
	(negv16qi2): New.
	(mulv8hi3): New.
	(mulsi3): Remove.
	(mul<mode>3): New.
	(_mulv4si3): New.
	(cmp<mode>): Don't accept constant arguments for DI, TI and SF.
	* config/spu/spu_internals.h: Handle overloaded intrinsics in C++ with
	spu_resolve_overloaded_builtin instead of static inline functions.

2006-12-01  Eric Botcazou  <ebotcazou@adacore.com>

	* fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
	type instead of the size of its mode to compute the highest and
	lowest possible values.  Still check the size of the mode before
	flipping the signedness of the comparison.

2006-12-01  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	* config/spu/predicates.md (spu_mov_operand): Add.
	* config/spu/spu.c (spu_expand_extv): Remove unused code.
	(print_operand_address, print_operand): Handle addresses containing AND.
	(spu_split_load, spu_split_store): Use updated movti pattern.
	* config/spu/spu.md: (_mov<mode>, _movdi, _movti): Handle loads and
	stores in mov patterns for correct operation of reload.
	(lq, lq_<mode>, stq, stq_<mode>): Remove.

2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/30021
	* c-common.c (check_main_parameter_types): Check for error_mark_node.

2006-12-01  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (ftree-combine-temps): Remove.
	* tree-outof-ssa.c (SSANORM_COMBINE_TEMPS): Remove.
	(coalesce_ssa_name): Don't check for combine-temps.
	(coalesce_vars): Remove.
	(check_replaceable): Use num_imm_uses.
	(remove_ssa_form, insert_backedge_copies, rewrite_out_of_ssa): Don't
	check for combine-temps.
	(rewrite_out_of_ssa): Never create a ref_count in the var_map.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Change parms
	to register_ssa_partition calls.
	* tree-ssa-live.c (register_ssa_partition): Remove prototype.
	(init_var_map, delete_var_map): remove refernces to ref_count.
	(create_ssa_var_map): Never calculate a ref count.
	(type_var_init): Remove.
	* tree-ssa-live.h (typedef struct _var_map): Remove ref_count.
	(SSA_VAR_MAP_REF_COUNT): Delete.
	(create_ssa_var_map): Change Prototype to have no parameters.
	(version_ref_count): Delete.
	(register_ssa_partition): Remove 'is_use' paramater and don't set the
	ref_count vector.
	(type_var_num, type_var, type_var_first_partition,
	type_var_next_partition, type_var_dump, type_var_delete,
	type_var_remove_partition, type_var_find, type_var_compact,
	type_var_decompact): Remove.

2006-12-01  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.md (pushsi_insn, popsi_insn): Set correct addrtype
	attribute.

2006-12-01  Richard Guenther  <rguenther@suse.de>

	PR c++/29433
	* dwarf2out.c (struct pubname_struct): Make name const.
	(add_pubtype): Do not xstrdup identifiers.

2006-12-01  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (bfin_valid_add): Fix the logic that ensures
	multiword accesses are in range.

2006-12-01  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29921
	* tree-ssa-ccp.c (canonicalize_float_value): New function.
	(set_lattice_value): Use canonicalize_float_value.

2006-11-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* config/spu/spu.c (spu_builtin_range): Move from spu-c.c
	(TARGET_RESOLVE_OVERLOADED_BUILTIN): Delete.
	(spu_cpu_cpp_builtins): Remove.
	(spu_override_options): Don't set warn_main.
	(spu_force_reg): Move from spu-c.c.
	(spu_check_builtin_parm): Likewise.
	(expand_builtin_args): Likewise.
	(spu_expand_builtin_1): Likewise.
	(spu_expand_builtin): Likewise.
	* config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Define, set
	warn_main and targetm.resolve_overloaded_builtin.
	* config/spu/spu-c.c (spu_builtin_range): Remove.
	(spu_check_builtin_parm): Remove.
	(expand_builtin_args): Remove.
	(spu_expand_builtin_1): Remove.
	(spu_expand_builtin): Remove.
	(spu_cpu_cpp_builtins): Moved from spu.c
	(spu_force_reg): Remove.

2006-12-01  Joseph Myers  <joseph@codesourcery.com>
	    David Edelsohn  <edelsohn@gnu.org>

	PR target/24036
	* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
	* defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Define.
	* config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Define.
	* rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
	Use new macros to detect modes with holes; do not look at integer
	units.
	(subreg_offset_representable_p): Check for and disallow cases
	where the modes use different numbers of bits from registers.
	* config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
	constant for soft-float.
	(rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
	containing doubles.
	(rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
	in E500 double case.
	* config/rs6000/rs6000.md (movtf): Allow soft-float.
	(movtf_softfloat): New.

2006-11-30  Richard Sandiford  <richard@codesourcery.com>

	* simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than
	simplify_gen_subreg.

2006-11-30  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-live.c (create_coalesce_list): Create a hash table.
	(COALESCE_HASH_FN): New.  Define hash function.
	(partition_pair_map_hash): New.  Hash value for a partition pair.
	(partition_pair_map_eq): New.  Equality for hash pairs.
	(create_coalesce_list): Create hash table.
	(delete_coalesce_list): Free hash table.
	(find_partition_pair): Find/create pairs in hash table.
	(compare_pairs):  Sort pairs in ascending order now.
	(num_coalesce_pairs): New.  Number of pairs in hash table.
	(struct partition_pair_iterator): Iterator struct for pair table.
	(first_partition_pair): Iterator function for first pair.
	(end_partition_pair_p): Iterator function for end of iteration.
	(next_partition_pair): Iterator function for next pair.
	(FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
	(sort_coalesce_list): Sort pairs from hash table into an array.
	(pop_best_coalesce): Take pairs from the array.
	(dump_coalesce_list): Update to use hash table or sorted array.
	* tree-ssa-live.h (struct partition_pair_d): Remove next field.
	(struct coalesce_list_d): Add hash table related fields.

2006-11-30  Jan Hubicka  <jh@suse.cz>

	PR middle-end/30028
	* builtins.c (fold_builtin_memory_op): Fix typo in the check for
	memmove/bcopy->memcpy conversion.

2006-11-30  Carlos O'Donell  <carlos@codesourcery.com>

	* doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
	* config/elfos.h [!MAX_OFILE_ALIGNMENT] (MAX_OFILE_ALIGNMENT):
	Default is the largest alignment supported for 32-bit ELF and
	representable on a 32-bit host.

2006-11-30  Janis Johnson  <janis187@us.ibm.com>

	* config/dfp-bit.c (DFP_TO_INT): Use wider precision.

2006-11-30  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-operands.h (struct ssa_operands): New.
	* tree-flow-inline.h (gimple_ssa_operands): New function.
	* tree-flow.h: (struct gimple_df): Add ssa_operands.
	* Makefile.in: Remove gt-tree-ssa-operands.h
	* tree-ssa-operands.c: Do not include gt-tree-ssa-operands.h
	(free_defs, free_uses, free_vuses, free_maydefs, free_mustdefs,
	operand_memory, operand_memory_index, ops_active): Remove statics.
	(ALLOC_OPTYPE): Update.
	(operand_build_sort_virtual): Update.
	(ssa_operands_active): Update.
	(init_ssa_operands): Update.
	(fini_ssa_operands): Update.
	(ssa_operand_alloc): Update.
	(INITIALIZE_USE): Update.
	(finalize_ssa_use_ops): Update.
	(finalize_ssa_v_may_def_ops): Update.
	(finalize_ssa_vuse_ops): Update.
	(finalize_ssa_v_must_def_ops): Update.

2006-11-30  Richard Guenther  <rguenther@suse.de>

	* tree-vectorizer.h (vectorizable_function): Export.
	* tree-vect-transform.c (vectorizable_function): Likewise.
	* tree-vect-patterns.c (vect_recog_pow_pattern): Set
	type_in to scalar type in recognition of squaring.
	Make sure the target can vectorize sqrt in recognition
	of sqrt, set type_in to vector type in this case.

2006-11-30  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (R10_REG): New constant.
	* config/i386/i386.c (pro_epilogue_adjust_stack): Use R11_REG.
	(ix86_emit_restore_regs_using_mov): Ditto.
	(ix86_expand_call): Ditto.
	(x86_output_mi_thunk): Ditto. Also use R10_REG.

2006-11-30  Steven Bosscher  <steven@gcc.gnu.org>

	* cselib.c (cselib_init): Use special MEM rtx form for callmem.
	* alias.c (canon_true_dependence): Update comment.

2006-11-30  Steven Bosscher  <steven@gcc.gnu.org>

	* cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
	at the end of a diagnostics message.

	* alloc-pool.c (pool_free): Postpone clearing the pool entry
	until after asserting that it was allocated in the right pool.

	* cfgrtl.c (print_rtl_with_bb): Print predecessor and
	successor edge information as well.  Make output of live regs
	on exit consistent with live regs on entry.

2006-11-30  Uros Bizjak  <ubizjak@gmail.com>

	PR target/29852
	* config/i386/i386.md (*truncxfsf2_mixed, *truncxfdf2_mixed): Enable
	insn patterns for TARGET_80387.
	(*truncxfsf2_i387, *truncxfdf2_i387): Remove.
	(*truncxfsf2_i387_1): Rename to *truncxfsf2_i387.
	(*truncxfdf2_i387_1): Rename to *truncxfdf2_i387.
	(fmod<mode>3, remainder<mode>3): Enable expaders for SSE math.
	Generate truncxf<mode>2 insn patterns for strict SSE math.

2006-11-30  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (movsf_1): Enable pattern for standard
	80387 constants before reload when optimizing for size.
	(*movdf_nointeger, *movdf_integer): Ditto.
	(*movxf_nointeger, *movxf_integer): Disable patterns for standard
	80387 constants before reload when not optimizing for size.

	(*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
	extension of XFmode input operands.

2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* config/spu/crt0.c (__dso_handle): Define.

2006-11-30  Kaz Kojima  <kkojima@gcc.gnu.org>

	* emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially
	when clearing the used flags.

2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* config/spu/spu.md (extend_compare): Fix whitespace formatting.

2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR target/29945
	* config/spu/spu.md  (extend_compare<mode>): New pattern.
	(extend_compare): Change to expand and use the above pattern.

2006-11-29  Janis Johnson  <janis187@us.ibm.com>

	* config/dfp-bit.c (DFP_TO_INT): Fix rounding mode.

	* config/dfp-bit.h (CONTEXT_ROUND): Delete.
	(DFP_INIT_ROUNDMODE): Define.
	* config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.
	* mklibgcc.in: Fix dependencies for dfp-bit.c.

2006-11-29  Tehila Meyzels  <tehila@il.ibm.com>

	* haifa-sched.c: Remove define LINE_NOTE(INSN).  Remove line_note_head.
	Update documentation.
	(associate_line_notes_with_blocks): Kill.
	(extend_bb): Remove basic block argument, put void instead.
	Remove line number handling for each bb.
	(save_line_notes): Kill.
	(restore_line_notes): Kill.
	(sched_init): Remove line_note_head initialization.
	Change extend_bb call.
	(sched_finish): Remove free of line_note_head.
	(add_block): Change extend_bb call.
	* sched-ebb.c (schedule_ebb): Remove save_line_notes,
	rm_line_notes and restore_line_notes calls.
	(schedule_ebbs): Remove rm_redundant_line_notes.
	* sched-int.h (struct haifa_insn_data): Remove line_note.
	(save_line_notes): Remove declaration.
	(restore_line_notes): Remove declaration.
	* modulo-sched.c (loop_canon_p): Update debug info printing
	by using insn locators instead of line note.
	(sms_schedule): Update debug info printing, by using insn
	locators instead of line note.
	* sched-rgn.c (debug_dependencies): Remove handling of case
	n>0 (line number), since it's a dead code.
	(schedule_region): Remove save_line_notes and
	restore_line_notes calls.

2006-11-29  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/predicates.md (gpc_reg_operand): Check
	invalid_e500_subreg.
	* config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
	SImode subregs of SPE vectors.
	* config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
	* jump.c (true_regnum): Require subregs to satisfy
	subreg_offset_representable_p.

2006-11-29  Daniel Berlin  <dberlin@dberlin.org>
	    Steven Bosscher <stevenb.gcc@gmail.com>

	* Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
	since it no longer exists.

2006-11-29  Duncan Sands  <baldrick@free.fr>

	PR tree-optimization/23744
	* tree-vrp.c (vrp_meet): do not require ranges to intersect.

2006-11-29  Duncan Sands  <baldrick@free.fr>

	PR tree-optimization/23744
	* testsuite/gcc.dg/tree-ssa/pr23744.c: new test.

2006-11-29  Duncan Sands  <baldrick@free.fr>

	PR tree-optimization/23744
	* testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.

2006-11-29  Jie Zhang  <jie.zhang@analog.com>

	* doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.

2006-11-29  J"orn Rennecke  <joern.rennecke@st.com>

	* sh.opt (minline-ic_invalidate): New option.
	(musermode): Adjust comment.
	* sh.c (sh_initialize_trampoline): Emit library call unless
	is set; if it is set, don't emit library call if we can use icbi
	instead.
	* sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
	icbi for TARGET_SH4_300.
	* t-sh (LIB1ASMFUNCS_CACHE): Set.
	* doc/invoke.texi: Document -minline-ic_invalidate; Update
	-musermode documentation.

2006-11-29  Jim Tison  <jtison@us.ibm.com>

	* gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
	__gthread_recursive_mutex_init): Define.

2006-11-29  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
	STRICT_ALIGNMENT and the type is more aligned than the saved
	registers, copy via a temporary.

2006-11-28  Andrew Pinski  <pinskia@gmail.com>

	PR tree-opt/29984
	* tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
	and MIN_EXRP.

2006-11-28  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.

2006-11-28  Jan Hubicka  <jh@suse.cz>

	Privatize SSA variables into gimple_df.
	* tree-flow-inline.h
	(gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
	gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
	gimple_nonlocal_all): New accessors.
	(first_referenced_var): Update.
	(mark_stmt_modified): Update.
	(is_call_clobbered): Update.
	(mark_call_clobbered): Update.
	(clear_call_clobbered): Update.
	(mark_non_addressable): Update.
	* tree-vrp.c (get_value_range): Update.
	* tree-into-ssa.c (in_ssa_p): Kill.
	(get_default_def_for): Update.
	(rewrite_into_ssa): Update.
	* tree-complex.c (init_parameter_lattice_values): Update.
	(update_complex_assignment): Update.
	(update_parameter_components): Update.
	(expand_complex_libcall): Update.
	(expand_complex_operations_1): Update.
	* tree-tailcall.c (arg_needs_copy_p): Update.
	(add_virtual_phis): Update.
	(tree_optimize_tail_calls_1): Update.
	* tree-ssa-dse.c (memory_ssa_name_same): Update.
	* tree-ssa-copyrename.c
	(copy_rename_partition_coalesce): Update.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
	* tree-ssa-propagate.c (set_rhs): Update.
	* tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
	addressable_vars, global_var):Kill.
	(set_initial_properties): Update.
	(init_alias_info): Update.
	(finalize_ref_all_pointers): Update.
	(setup_pointers_and_addressables): Update.
	(maybe_create_global_var): Update.
	(create_global_var): Update.
	(dump_points_to_info): Update.
	* function.h (struct gimple_df): Forward declare.
	(struct function): Add GIMPLE_DF field.
	* gimplify.c (force_gimple_operand): Update.
	* tree-dfa.c (referenced_vars, default_defs): KIll.
	(make_rename_temp): Update.
	(dump_variable): Update.
	(referenced_var_lookup): Update.
	(referenced_var_check_and_insert): Update.
	(default_def): Rename to ...
	(gimple_default_def): ... this one; accept cfun argument.
	(set_default_def): Update.
	* tree-cfgcleanup.c (modified_noreturn_calls): Kill.
	(cleanup_control_flow): Update.
	* tree-ssa-pre.c (compute_avail): Update
	* tree-ssa-live.c (calculate_live_on_entry): Update.
	* tree-ssa.c (verify_use): Update.
	(verify_call_clobbering): Update.
	(verify_call_clobbering): Update.
	(init_tree_ssa): Update.
	(delete_tree_ssa): Update.
	* tree-outof-ssa.c (coalesce_ssa_name): Update.
	(rewrite_out_of_ssa): Update.
	* tree-flow.h (gimple_df): New structure collecting dataflow variables.
	(FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
	private accessors.
	(in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
	ssa_names, global_var, nonlocal_all, call_clobbered_vars,
	addressable_vars, aliases_computed_p): Kill.
	(default_def): Rename to...
	(gimple_default_def): ... this one.
	(defaule_def_fn): Kill.
	(num_referenced_vars, ssa_names, num_ssa_names): Update.
	* tree-ssa-structalias.c (nonlocal_all): Kill.
	(get_constraint_exp_from_ssa_var): Update.
	(create_nonlocal_var): Update.
	(get_constraint_for): Update.
	(update_alias_info): Update.
	(find_global_initializers): Update.
	(intra_create_variable_infos): Update.
	(intra_create_variable_infos):
	(find_what_p_points_to): Update.
	(init_alias_heapvars): Update.
	* tree-cfg.c (remove_bb): Update.
	(gimplify_val): Update.
	* tree-ssa-reassoc.c (get_rank): Update.
	(init_reassoc): Update.
	* tree-ssanames.c: Do not include gt-tree-ssanames.h
	(ssa_names, free_ssanames): Kill.
	(init_ssanames): Update.
	(make_ssa_name): Update.
	(release_ssa_name): Update.
	(release_defs): Update.
	(replace_ssa_name_symbol): Update.
	* tree-ssa-operands.c (access_can_touch_variable): Update.
	(add_virtual_operand): Update.
	(add_call_clobber_ops): Update.
	(add_call_read_ops): Update.
	(get_call_expr_operands): Update.
	(get_asm_expr_operands): Update.

2006-11-28  Jan Hubicka  <jh@suse.cz>

	* builtins.c: Include tree-flow.h.
	(fold_builtin_memory_op): Be more aggressive on converting memcpy to
	assignment; convert memmove to memcpy for sizes greater than 1 where
	alignment of operands prohibit the partial overlap.

2006-11-28  Jan Hubicka  <jh@suse.cz>

	* invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
	* cgraph.c (dump_cgraph_node): Dump stack usage.
	* cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
	(cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
	* cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
	* ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
	(cgraph_check_inline_limits): Limit stack growth.
	* cfgexpand.c: Include tree-inline.h.
	(account_stack_vars): New function.
	(expand_one_var): New param to just account the stack; return estimated
	size.
	(expand_used_vars_for_block): Update call of expand_one_var.
	(account_used_vars_for_block): New function.
	(estimated_stack_frame_size): Likewise.
	(init_vars_expansion, fini_vars_expansion): Break out from..
	(expand_used_vars): ... here.
	* tree-inline.h (estimated_stack_frame_size): Declare.
	* params.def (PARAM_LARGE_STACK_FRAME, PARAM_STACK_FRAME_GROWTH): New.

2006-11-28  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (ggc_print_statistics): Use %ul and a cast to
	unsigned long for printing OBJECT_SIZE.

2006-11-27  Steven Bosscher  <steven@gcc.gnu.org>

	* alias.c (init_alias_analysis): Remove simplification loop
	after propagating pointers.

2006-11-27  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
	and m_GENERIC64.

2006-11-27  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.

2006-11-27  Roger Sayle  <roger@eyesopen.com>
	    Manuel Lopez-Ibanez <manu@gcc.gnu.org>

	* c-common.c (constant_fits_type_p): Delete.
	(unsigned_conversion_warning): Delete.
	(conversion_warning): Integrate Wconversion warning from
	unsigned_conversion_warning.
	(convert_and_check): Integrate Woverflow warning from
	unsigned_conversion_warning.  Reorganize and simplify to avoid
	dependence upon the middle-end setting TREE_OVERFLOW on integral
	conversions, by using int_fits_type_p directly.

2006-11-27  Tobias Burnus  <burnus@net-b.de>

	* doc/invoke.texi: Fixed typo.

2006-11-27  Michael Matz  <matz@suse.de>
	    Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/29319
	* config/s390/predicates.md (larl_operand): Check addend of larl
	operand to be in range of -/+2GB.
	* config/s390/s390.c (legitimize_pic_address): Likewise.
	Changed type of variable even to HOST_WIDE_INT.

2006-11-27  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_block_move_via_libcall): Export.
	(clear_storage_via_libcall): Rename to ...
	(set_storage_via_libcall): ... this one; handle arbitrary value to set.
	(clear_storage): Update to set_storage_via_libcall.
	* expr.h (emit_block_move_via_libcall): Declare
	* config/i386/i386.h (stringop_alg): New enum.
	(MAX_STRINGOP_ALGS): New constant.
	(stringop_algs): New struct.
	(processor_costs): Add memcpy/memset descriptors.
	(TARGET_REP_MOVEL_OPTIMAL): Remove.
	* config/i386/i386.md (movsi_insv_1_rex64): New pattern.
	(strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
	for memset.
	* config/i386/i386.opt (minline-stringops-dynamically,
	mstringop-strategy): New
	parameters.
	* config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
	(ix86_expand-clrmem): Rename to ...
	(ix86_expand_setmem): ... this one; update prototype.
	* config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
	(size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
	geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
	nocona_cost, core2_cost, generic_cost, generic64_cost,
	generic32_cost): Add memcpy/memset descriptors.
	(x86_rep_movl_optimal): Remove.
	(stringop_alg): New static variable.
	(ix86_expand_aligntest): Handle predictions.
	(override_options): Add strgop_alg handling.
	(predict_jump): New function.
	(scale_counter): New function.
	(expand_set_or_movmem_via_loop): New function.
	(expand_movmem_via_rep_mov): New function.
	(expand_setmem_via_rep_stots): New function.
	(emit_strmov): New function.
	(expand_movmem_epilogue): New function.
	(expand_setmem_epilogue_via_loop): New function.
	(expand_setmem_epilogue): New function.
	(expand_movmem_prologue): New function.
	(expand_setmem_prologue): New function.
	(decide_alg): New function.
	(decide_alignment): New function.
	(ix86_exand_movmem): Rewrite.
	(promote_duplicated_reg): New function.
	(ix86_expand_clrmem): Rename to ...
	(ix86_expand_setmem): ... this one. Rewrite.

	* invoke.texi (minline-stringops-dynamically): New command line option.
	(mstringop-strategy): Likewise.

2006-11-27  Jan Hubicka  <jh@suse.cz>

	* cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
	* rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
	* final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
	* insn-notes.def (FUNCTION_END): Remove.
	* jump.c (delete_related_insns): Don't worry about FUNCTION_END.
	(redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
	note.
	* ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
	* function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
	* cfglayout.c (duplicate_insn_chain): Don't worry about
	NOTE_FUNCTION_END.

2006-11-27  Richard Guenther  <rguenther@suse.de>
	    Zdenek Dvorak <dvorakz@suse.cz>

	* target.h (struct gcc_target): Add builtin_vectorized_function
	target hook.
	* target-def.h (TARGET_VECTORIZE): Likewise.
	* doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
	Document new target hook.
	* targhooks.h (default_builtin_vectorized_function): Declare.
	* targhooks.c (default_builtin_vectorized_function): Define.
	* tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
	(vectorizable_call): Declare.
	* tree-vect-analyze.c (vect_analyze_operations): Call
	vectorizable_call.
	* tree-vect-transform.c (vectorizable_function): New static function.
	(build_vectorized_function_call): Likewise.
	(vectorizable_call): New function.
	(vect_transform_stmt): Handle vectorizable calls.

2006-11-27  Richard Guenther  <rguenther@suse.de>

	PR middle-end/25620
	* builtins.c (expand_builtin_pow): Optimize non integer valued
	constant exponents using sqrt or cbrt if possible.  Always fall back
	to expanding via optabs.

2006-11-27  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/22372
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
	the type of the base address.
	(vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
	it in the data-ref pointer creation.
	(vect_init_vector): Add an argument, type of the init vector. Use it in
	the stmt creation.
	(vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
	(get_initial_def_for_reduction): Likewise.
	(vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
	void_type_node.
	(vectorizable_assignment, vect_permute_store_chain): Likewise.
	(vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
	correct type in stmt creation.
	(vect_setup_realignment): Use the correct type in stmt creation.
	(vect_permute_load_chain): Change type of MODIFY_EXPR to
	void_type_node.
	(vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
	of MODIFY_EXPR to void_type_node.
	(vectorizable_condition): Change type of MODIFY_EXPR to
	void_type_node.
	(vect_update_ivs_after_vectorizer): Use the correct type in stmt
	creation.

2006-11-27  Uros Bizjak  <ubizjak@gmail.com>

	Revert:
	2006-05-08  Uros Bizjak  <uros@kss-loka.si>
	* config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
	standard 80387 constants, raise the cost to prevent
	compress_float_constant() to generate load from memory.

	* config/i386/i386.md: Add new splitter pattern to split
	float_extended load of constant from constant pool into
	pure constant load.

2006-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/install.texi: Move GMP/MPFR configure options from Fortran
	section to general section.  Remove documentation for
	--with-mpfr-dir and --with-gmp-dir, add documentation for
	--with-mpfr-include, --with-mpfr-lib, --with-gmp-include and
	--with-gmp-lib.

	* builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.

2006-11-26  Razya Ladklesky  <razya@il.ibm.com>

	* testsuite/gcc.dg/ipa/ipa-6.c: New.

2006-11-26  Razya Ladklesky  <razya@il.ibm.com>

	PR tree-optimization/29122
	* tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME
	for the new version.  Assign NULL to DECL_RTL of the new version.

2006-11-25  Uros Bizjak  <ubizjak@gmail.com>

	* reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.

2006-11-25  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (cse_altered): Remove.
	(record_jump_equiv): Make true/false argument a bool instead
	of an int.
	(cse_insn): Don't set cse_altered.  Use delete_insn_and_edges
	where appropriate.  Emit a new jump before the existing one
	instead of after so that delete_insn_and_edges removes the
	dead edges properly.  Check any_condjump_p before calling
	record_jump_equiv.
	(cse_basic_block): Check any_condjump_p before calling
	record_jump_equiv.
	(cse_main): Don't set/check cse_altered.  Remove USE_C_ALLOCA.

2006-11-25  Brooks Moses  <brooks.moses@codesourcery.com>

	* c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
	-ffixed-line-length-* options.

2006-11-25  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (fpremxf4): Rename to fpremxf4_i387.
	(fprem1xf4): Rename to fprem1xf4_i387.

	(fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
	Rename patterns to fmod<mode>3.  Use general_operand operand
	constraint for operands 1 and 2.  Use SSE_FLOAT_MODE_P to disable
	patterns for SSE math.
	(remaindersf3, remainderdf3): Ditto.

2006-11-25  Joseph Myers  <joseph@codesourcery.com>

	* function.c (instantiate_virtual_regs_in_insn): Call force_reg
	inside start_sequence / end_sequence pair.

2006-11-25  Steven Bosscher  <steven@gcc.gnu.org>

	* jump.c (mark_all_labels): Work in cfglayout mode.
	* cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
	when in cfglayout mode, because there are no dead jumptables
	visible.
	* cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
	in cfglayout mode.
	(commit_edge_insertions): Do not allow insertion of instructions
	with control flow insns when in cfglayout mode.

2006-11-25  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (execute_vrp): Do not pass loops structure through
	arguments.
	* loop-unswitch.c (unswitch_loops, unswitch_single_loop,
	unswitch_loop): Ditto.
	* tree-loop-linear.c (linear_transform_loops): Ditto.
	* tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
	tree_ssa_lim): Ditto.
	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
	free_numbers_of_iterations_estimates): Ditto.
	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
	tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
	* cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
	remove_path, add_loop, loopify, unloop, fix_loop_placements,
	place_new_loop, duplicate_loop, duplicate_subloops,
	update_single_exit_for_duplicated_loops, copy_loops_to,
	duplicate_loop_to_header_edge, create_preheaders,
	force_single_succ_latches, loop_version, fix_loop_structure):
	Ditto.
	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
	tree_unroll_loop): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree-scalar-evolution.c (select_loops_exit_conditions,
	scev_initialize, scev_analysis): Ditto.
	* tree-scalar-evolution.h (scev_initialize): Ditto.
	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
	* cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
	* modulo-sched.c (sms_schedule): Ditto.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
	* loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
	rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
	* ifcvt.c (if_convert): Ditto.
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
	canonicalize_loop_induction_variables,
	canonicalize_induction_variables,
	tree_unroll_loops_completely, remove_empty_loops): Ditto.
	* tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
	tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
	tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
	tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
	tree_ssa_loop_done): Ditto.
	* predict.c (predict_loops, tree_estimate_probability, estimate_loops,
	estimate_bb_frequencies): Ditto.
	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
	slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
	decide_unrolling_and_peeling, peel_loop_completely,
	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
	peel_loop_simple, unroll_loop_stupid): Ditto.
	* loop-doloop.c (doloop_optimize_loops): Ditto.
	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
	* loop-invariant.c (move_loop_invariants): Ditto.
	* tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
	* tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
	tree_ssa_prefetch_arrays): Ditto.
	* lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
	Ditto.
	* tree-vect-transform.c (vect_do_peeling_for_loop_bound,
	vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
	* cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
	mark_single_exit_loops, cancel_loop, cancel_loop_tree,
	verify_loop_structure): Ditto.
	* tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
	canonicalize_induction_variables, tree_unroll_loops_completely,
	tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
	estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
	tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
	tree_unroll_loop, linear_transform_loops): Declaration changed.
	* basic-block.h: Remove declaration of struct loops.
	* cfghooks.h (struct cfg_hooks): Change type of
	cfg_hook_duplicate_loop_to_header_edge.
	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
	* tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
	vect_transform_loop): Declaration changed.
	* lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
	* cfgloop.h (flow_loops_dump, fix_loop_structure,
	mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
	cancel_loop_tree, create_preheaders, force_single_succ_latches,
	verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
	loopify, loop_version, remove_path, unswitch_loops,
	unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
	Declaration changed.

2006-11-24  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition.
	(X87MODEF): New mode macro.
	(ssemodefsuffix): New mode attribute.
	(truncxf<mode>2_i387_noop_unspec): New insn pattern.
	(sqrt_extend<mode>xf2_i387): New insn pattern.
	(sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
	insn and truncate result back to original mode using
	UNSPEC_TRUNC_NOOP truncation.
	(*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and
	ssemodefsuffix mode attribute.
	(*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387)
	(*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387)
	(*sqrtextenddfxf2_i387): Remove insn patterns.

	(fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
	truncation patterns.

	* reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.

2006-11-24  Jakub Jelinek  <jakub@redhat.com>

	PR c/29955
	* c-tree.h (c_maybe_initialize_eh): New prototype.
	* c-decl.c (finish_decl): Move EH initialization...
	(c_maybe_initialize_eh): ... here.  New function.
	* c-parser.c (c_parser_omp_construct): Call c_maybe_initialize_eh
	if not #pragma omp atomic.

	PR c/29736
	* c-common.c (handle_vector_size_attribute): Disallow VECTOR_TYPE
	or UNION_TYPE inner types.

2006-11-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/29964
	* ipa-pure-const.c (check_tree): If the original tree
	is volatile return early and say the function is not pure
	nor const.  Remove the volatile check for writes.
	(analyze_function): Print out the result of the local
	analysis pass.

2006-11-24  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/eabispe.h (TARGET_DEFAULT): Include
	MASK_STRICT_ALIGN.
	* config/rs6000/linuxspe.h (TARGET_DEFAULT): Likewise.
	* config/rs6000/rs6000.c (rs6000_override_options): Use
	MASK_STRICT_ALIGN for 8540 and 8548.  Add MASK_STRICT_ALIGN to
	POWERPC_MASKS.

2006-11-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390.c (s390_emit_compare_and_swap): New function.
	(s390_expand_cs_hqi, s390_expand_atomic): Call
	s390_emit_compare_and_swap.

2006-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.

2006-11-24  Manuel Lopez-Ibanez <manu@gcc.gnu.org>

	PR c/2707
	PR c++/26167
	* c-common.c (conversion_warning): New.
	(convert_and_check): Call conversion_warning unless there is an
	overflow warning.
	* doc/invoke.texi (-Wconversion): Update description.

2006-11-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (tree_pointer_compare): New function.
	(compact_name_tags): New function.
	(group_aliases): Call compact_name_tags.

2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* real.h (real_isinteger): Declare.
	* real.c (real_isinteger): Define.
	* builtins.c (integer_valued_real_p): Use it.

2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/9072
	* c.opt (Wtraditional-conversion): New.
	(Wconversion): Update description.
	* c-typeck.c (convert_arguments): Warnings for prototypes causing
	type conversions different from what would happen in the absence
	of prototype are now handled by Wtraditional-conversion.
	* doc/invoke.texi (Wtraditional-conversion): New.
	(Wconversion): Update description.
	* doc/trouble.texi (Wconversion): Replace Wconversion by
	Wtraditional-conversion.

2006-11-23  Andrew Pinski  <pinskia@gmail.com>

	* predict.c (tree_estimate_probability): Check to make
	sure current_loops is non null before calling flow_loops_dump.

2006-11-23  Bernd Schmidt  <bernd.schmidt@analog.com>

	* var-tracking.c (emit_note_insn_var_location): Revert previous patch.

2006-11-23  David Ung  <davidu@mips.com>

	* config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
	combination.
	(ISA_HAS_MXHC1): True if ISA supports mfhc1 and mthc1 opcodes.
	(ASM_SPEC): Pass along -mfp32 and -mfp64.
	* config/mips/mips.c (mips_split_64bit_move): Use gen_mthc1 to set
	high part of FP register when in 64-bit FP register mode.  Similarly
	use gen_mfhc1 to load high part of FP register.
	(override_options): Allow -mgp32 and -mfp64 combination if
	ISA_HAS_MXHC1 (currently for O32 only).
	(mips_cannot_change_mode_class): If floating-point registers are
	bigger than word size. disallow conversion of float register from a
	large integer mode to a float mode smaller than the float register
	size.
	(mips_class_max_nregs): Handle float registers case seperately.
	* config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
	UNSPEC_MTHC1.
	(movdi_32bit): Use !TARGET_FLOAT64 in condition pattern.
	(movdf_hardfloat_32bit): Similarly.
	(movdi_gp32_fp64): New DImode pattern for MIPS32R2 which optionally
	support a full 64-bit fpu.
	(mthc1): New pattern to generate MTHC1 instruction.
	(mfhc1): New pattern to generate MFHC1 instruction.
	* doc/invoke.texi (MIPS Options): Document the -mgp32 -mfp64
	option for the MIPS32R2 and mention its use under O32 ABI.

2006-11-23  Bernd Schmidt  <bernd.schmidt@analog.com>

	* var-tracking.c (emit_note_insn_var_location): Take care not to
	cause verify_flow_info failures.

2006-11-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c: Remove edge weights in favor of just
	processing them as complex constraints.
	(struct constraint_graph): Remove weighted succs and preds. Rename
	nonweighted succs and preds.
	(constraint_edge): Removed.
	(constraint_edge_t): Ditto.
	(constraint_edge_pool): Ditto.
	(new_constraint_edge): Ditto.
	(constraint_edge_equal): Ditto.
	(constraint_edge_less): Ditto.
	(constraint_edge_vec_find): Ditto.
	(erase_self_graph_edge): Ditto.
	(add_graph_edge): Removed.
	(get_graph_weights): Ditto.
	(allocate_graph_weights): Ditto.
	(valid_weighted_graph_edge): Ditto
	(bitmap_other_than_zero_bit_set): Ditto.
	(int_add_graph_edge): Renamed to add_graph_edge.
	(clear_edges_for_node): Remove support for weighted edges.
	(merge_graph_nodes): Ditto.
	(valid_graph_edge): Ditto.
	(build_constraint_graph): Ditto.
	(scc_visit): Ditto.
	(collapse_nodes): Ditto.
	(process_unification_queue): Ditto.
	(topo_visit): Ditto.
	(do_ds_constraint): Ditto.
	(perform_var_subsitution): Ditto.
	(solve_graph): Ditto.
	(init_alias_vars): Ditto.
	(delete_points_to_sets): Ditto.
	(do_complex_constraint): Support offsetted copies here.

2006-11-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/spu/spu_intrinsics.h (SPU_RdEventStatMask): Rename to
	SPU_RdEventMask.
	* config/spu/spu_mfcio.h (spu_read_event_mask): Update.

	* config/spu/spu_mfcio.h (struct mfc_list_element): Change width
	of size bitfield.

2006-11-23  Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu-elf.h (LIB_SPEC): Do not link with -lc_p.

2006-11-23  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29921
	* fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
	signed and unsigned zero equal.

2006-11-22  Peter Bergner  <bergner@vnet.ibm.com>

	* config/rs6000/rs6000.c (get_store_dest): New.
	(adjacent_mem_locations): Use get_store_dest() to get
	the rtl of the store destination.

2006-11-22  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/spe.md (SPE64): New mode macro.
	(mov_sidf_e500_subreg0): Change to mov_si<mode>_e500_subreg0.  Add
	memory load.
	(mov_si<mode>_e500_subreg0_2): New.
	(mov_sidf_e500_subreg4): Change to mov_si<mode>_e500_subreg4.  Add
	memory load.
	(mov_si<mode>_e500_subreg4_2): New.
	* config/rs6000/predicates.md (input_operand): Do not allow
	invalid E500 subregs.
	(rs6000_nonimmediate_operand): Check for invalid E500 subregs also
	if TARGET_SPE.
	* config/rs6000/rs6000.c (invalid_e500_subreg): Check for subregs
	involving DFmode if TARGET_E500_DOUBLE.  Check for subregs
	involving vector modes if TARGET_SPE.

2006-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>

	Revert
	2006-11-12  Kaz Kojima  <kkojima@gcc.gnu.org>
	* reorg.c (emit_delay_sequence): Copy the delay slot insn.

2006-11-22  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/predicates.md (d_register_operand, mem_p_address_operand,
	mem_i_address_operand): New predicates.
	* config/bfin/bfin.c (bfin_issue_rate): New function.
	(TARGET_SCHED_ISSUE_RATE): New macro.
	* config/bfin/bfin.md (addrtype): New attribute.
	(slot0, slot1, slot2, store, pregs): New cpu_units.
	(core): Now a define_reservation.
	(alu): Remove some insn types from this reservation.
	(dsp32, load32, loadp, loadi, store32, storep, storei, multi): New
	insn reservations.
	(dummy reservation): Don't trigger for mcld insns.
	(absence_sets): Two new absence sets to enforce slot ordering.
	(popsi_insn): Set addrtype.

2006-11-22  Ira Rosen  <irar@il.ibm.com>

	* doc/c-tree.texi: Document new tree codes.
	* doc/md.texi: Document new optabs.
	* tree-pretty-print.c (dump_generic_node): Handle print of new tree
	codes.
	* optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
	* optabs.h (optab_index): Add new.
	(vec_extract_even_optab, vec_extract_odd_optab,
	vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
	* genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
	vec_interleave_high_optab, vec_interleave_low_optab): Initialize
	new optabs.
	* expr.c (expand_expr_real_1): Add implementation for new tree codes.
	* tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
	* tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
	along with macros for their access.
	* tree-data-ref.h (first_location_in_loop, data_reference): Update
	comment.
	* tree-vect-analyze.c (toplev.h): Include.
	(vect_determine_vectorization_factor): Fix indentation.
	(vect_insert_into_interleaving_chain,
	vect_update_interleaving_chain, vect_equal_offsets): New functions.
	(vect_analyze_data_ref_dependence): Add argument for interleaving
	check. Check for interleaving if it's true.
	(vect_check_dependences): New function.
	(vect_analyze_data_ref_dependences): Call vect_check_dependences for
	every ddr. Call vect_analyze_data_ref_dependence with new argument.
	(vect_update_misalignment_for_peel): Update for interleaving.
	(vect_verify_datarefs_alignment): Check only first data-ref for
	interleaving.
	(vect_enhance_data_refs_alignment): Update for interleaving. Check
	only first data-ref for interleaving.
	(vect_analyze_data_ref_access): Check interleaving, update
	interleaving data.
	(vect_analyze_data_refs): Call compute_data_dependences_for_loop
	with different parameters.
	* tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
	VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
	* tree-inline.c (estimate_num_insns_1): Add cases for new codes.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
	Update step in case of interleaving.
	(vect_strided_store_supported, vect_permute_store_chain): New
	functions.
	(vectorizable_store): Handle strided stores.
	(vect_strided_load_supported, vect_permute_load_chain,
	vect_transform_strided_load): New functions.
	(vectorizable_load): Handle strided loads.
	(vect_transform_stmt): Add argument. Handle strided stores. Check
	that vectorized stmt exists for patterns.
	(vect_gen_niters_for_prolog_loop): Update calculation for
	interleaving.
	(vect_transform_loop): Remove stmt_vec_info for strided stores after
	whole chain vectorization.
	* config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
	UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
	(vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
	vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
	vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.

2006-11-22  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (enum taken): Remove PATH_AROUND.
	(addr_affects_sp_p, invalidate_skipped_set,
	invalidate_skipped_block): Remove.
	(cse_end_of_basic_block): Remove skip_blocks and related code.
	(cse_main): Don't test for flag_cse_skip_blocks.
	Update cse_end_of_basic_block call.
	(cse_basic_block): Likewise.  Remove PATH_AROUND case.  Remove
	code to lengthen the path if a jump was simplified.

2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/29924
	* loop-unroll.c (split_edge_and_insert): Handle the case insns is NULL.
	(unroll_loop_runtime_iterations): Assert that the argument passed to
	split_edge_and_insert is not NULL.
	* loop-doloop.c (add_test): Ditto.

2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-loop-linear.c (linear_transform_loops): Use single_exit accessor
	functions.
	* tree-ssa-loop-niter.c (loop_only_exit_p): Ditto.
	* cfgloopmanip.c (update_single_exits_after_duplication,
	update_single_exit_for_duplicated_loop, loop_version): Ditto.
	* tree-scalar-evolution.c (get_loop_exit_condition,
	get_exit_conditions_rec, loop_closed_phi_def,
	number_of_iterations_in_loop, scev_const_prop): Ditto.
	* tree-ssa-loop-ivopts.c (single_dom_exit): Ditto.
	* modulo-sched.c (generate_prolog_epilog, loop_canon_p, sms_schedule):
	Ditto.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Ditto.
	* tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
	slpeel_update_phi_nodes_for_guard1, slpeel_update_phi_nodes_for_guard2,
	slpeel_make_loop_iterate_ntimes,
	slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_can_duplicate_loop_p,
	slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
	Ditto.
	* tree-if-conv.c (if_convertible_loop_p): Ditto.
	* tree-vect-analyze.c (vect_analyze_operations, vect_stmt_relevant_p,
	vect_analyze_loop_form): Ditto.
	* lambda-code.c (lambda_loopnest_to_gcc_loopnest, exit_phi_for_loop_p,
	can_convert_to_perfect_nest, perfect_nestify): Ditto.
	* tree-vect-transform.c (vect_create_epilog_for_reduction,
	vect_update_ivs_after_vectorizer, vect_do_peeling_for_loop_bound,
	vect_transform_loop): Ditto.
	* cfgloop.c (mark_single_exit_loops, verify_loop_structure): Ditto.
	(single_exit, set_single_exit): New functions.
	* cfgloop.h (struct loop): Rename single_exit field to single_exit_.
	(single_exit, set_single_exit): Declare.
	* doc/loop.texi: Undocument single_exit field.  Document single_exit
	accessor function.

2006-11-22  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29902
	* tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
	any involved ssa name appears in abnormal phi node.

2006-11-21  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_char_to_class): Delete.
	(xtensa_const_ok_for_letter_p): Delete.
	(xtensa_extra_constraint): Delete.
	(override_options): Delete xtensa_char_to_class initialization.
	* config/xtensa/xtensa.h (REG_CLASS_FROM_LETTER): Delete.
	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
	(EXTRA_CONSTRAINT): Delete.
	* config/xtensa/xtensa.md: Include constraints.md.
	(call_internal): Combine alternatives.
	(call_value_internal): Likewise, and remove invalid constraints.
	* config/xtensa/constraints.md: New file.
	* config/xtensa/xtensa-protos.h (xtensa_const_ok_for_letter_p): Delete.
	(xtensa_extra_constraint): Delete.
	* doc/md.texi (Machine Constraints): Refer to constraints.md for
	Xtensa constraints.

2006-11-21  Janis Johnson  <janis187@us.ibm.com>

	* config/dfp-bits.c (DFP_TO_INT): Remove code to saturate result
	of conversion that doesn't fit.

	* config/dfp-bit.h (CONTEXT_TRAPS, CONTEXT_ERRORS, DFP_RAISE): Delete.
	* config/dfp-bit.c (dfp_unary_op, dfp_binary_op, dfp_compare_op,
	DFP_TO_DFP, INT_TO_DFP, BFP_TO_DFP): Remove calls to DFP_RAISE.

	* config/dfp-bit.c (dfp_binary_func): Fix typedef.

2006-11-21  Douglas Gregor <doug.gregor@gmail.com>

	* c-common.h (enum rid): Add RID_STATIC_ASSERT.

2006-11-21  Richard Guenther  <rguenther@suse.de>

	* tree-vectorizer.h (NUM_PATTERNS): Increase.
	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
	vect_recog_pow_pattern.
	(vect_recog_pow_pattern): New function.

2006-11-21  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.opt (mstack-check-l1): New.
	* doc/invoke.texi (Blackfin Options): Document it.
	* config/bfin/bfin.c (bfin_expand_prologue): Generate code to use
	stack bounds in L1 memory if the new option is enabled.
	(override_options): Don't allow combinations of -fstack-limit and
	-mstack-check-l1.
	(add_to_reg): Renamed from add_to_sp.  All callers changed.  Lose some
	dead code.

	* config/bfin/bfin.c (hard_regno_mode_ok): Only allow first 31
	regs for DImode.
	(bfin_register_move_cost): Bump costs if trying to move plain
	integer values through accumulators.

2006-11-21  Ben Elliston  <bje@au.ibm.com>

	* config/spu/spu.c (spu_expand_vector_init): Initialise x.

2006-11-20  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
	    Russell Olsen <Russell_Olsen@playstation.sony.com>
	    Dmitri Makarov <Dmitri_Makarov@playstation.sony.com>
	    Yukishige Shibata <shibata@rd.scei.sony.co.jp>
	    Nobuhisa Fujinami <fnami@rd.scei.sony.co.jp>
	    Takeaki Fukuoka <fukuoka@rd.scei.sony.co.jp>
	    Andrew Pinski <Andrew_Pinski@playstation.sony.com>

	* config.gcc: Add target for SPU.
	* config/spu/constraints.md: New file.
	* config/spu/crt0.c: New file.
	* config/spu/crtend.c: New file.
	* config/spu/crti.asm: New file.
	* config/spu/crtn.asm: New file.
	* config/spu/float_unsdidf.c: New file.
	* config/spu/float_unssidf.c: New file.
	* config/spu/predicates.md: New file.
	* config/spu/spu-builtins.def: New file.
	* config/spu/spu-builtins.h: New file.
	* config/spu/spu-builtins.md: New file.
	* config/spu/spu-c.c: New file.
	* config/spu/spu-elf.h: New file.
	* config/spu/spu-modes.def: New file.
	* config/spu/spu-protos.h: New file.
	* config/spu/spu.c: New file.
	* config/spu/spu.h: New file.
	* config/spu/spu.md: New file.
	* config/spu/spu.opt: New file.
	* config/spu/spu_internals.h: New file.
	* config/spu/spu_intrinsics.h: New file.
	* config/spu/spu_mfcio.h: New file.
	* config/spu/t-spu-elf: New file.
	* config/spu/vec_types.h: New file.
	* config/spu/vmx2spu.h: New file.
	* doc/contrib.texi: Document SPU contributor.
	* doc/extend.texi: Document SPU extensions.
	* doc/invoke.texi: Document SPU options.
	* doc/md.texi: Document SPU constraints.

2006-11-21  Zdenek Dvorak <dvorakz@suse.cz>

	* cfgloopmanip.c (add_loop, duplicate_loop): Do not set level
	of the loop.
	* cfgloop.c (flow_loop_level_compute, flow_loops_level_compute):
	Removed.
	(flow_loop_dump): Do not dump loop level.
	(flow_loops_find): Do not call flow_loops_level_compute.
	* cfgloop.h (struct loop): Remove level field.

2006-11-21  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-im.c (schedule_sm, determine_lsm_ref,
	hoist_memory_references, loop_suitable_for_sm, determine_lsm_loop):
	Use vector of edges instead of array.
	* tree-ssa-loop-niter.c (find_loop_niter, find_loop_niter_by_eval,
	estimate_numbers_of_iterations_loop): Ditto.
	* predict.c (predict_loops): Ditto.
	* loop-unroll.c (analyze_insns_in_loop): Ditto.
	* tree-ssa-threadupdate.c: Remove declaration of heap allocation for
	edge vectors.
	* basic-block.h: Declare heap allocation for edge vectors.
	* tree-outof-ssa.c: Ditto.
	* cfgloop.c (get_loop_exit_edges): Return vector of edges.
	* cfgloop.h (get_loop_exit_edges): Declaration changed.

2006-11-20  Zack Weinberg  <zackw@panix.com>

	* gengtype.c (process_gc_options): Remove unnecessary forward decl.
	Add another out parameter, "skip".
	(set_gc_used_type): Adjust calls to process_gc_options.  If a field
	is tagged "skip", do not mark its type used.

2006-11-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/25500
	* tree-sra.c (single_scalar_field_in_record_p): New function.
	(decide_block_copy): Use it.

2006-11-20  David Daney  <ddaney@avtrex.com>

	* config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
	PC to point to following instruction.

2006-11-20  Anatoly Sokolov <aesok@post.ru>

	PR target/18553
	PR target/29449
	* config/avr/avr.h (OBJECT_FORMAT_ELF): Define.

	* config/avr/avr.h (DWARF2_DEBUGGING_INFO): Define.

2006-11-20  J"orn Rennecke  <joern.rennecke@st.com>

	* config.gcc (sh*-superh-elf): Add t-superh to tmake_file.
	Add sh/superh.h to tm_file.

2006-11-20  Carlos O'Donell  <carlos@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* cppdefault.c: Define cpp_PREFIX, cpp_PREFIX_len, and
	gcc_exec_prefix.
	(cpp_relocated): New function.
	* cppdefault.h: Declare cpp_PREFIX, cpp_PREFIX_len, gcc_exec_prefix
	and cpp_relocated.
	* Makefile.in (PREPROCESSOR_DEFINES): Add -DPREFIX option.
	* c-incpath.c (add_standard_paths): Call cpp_relocated. If relocated,
	replace configured prefix with gcc_exec_prefix.

2006-11-20  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.h (LEGITIMATE_CONSTANT_P): Call
	bfin_legitimate_constant_p.
	* config/bfin/bfin.md (movsi expander): Check return value of
	expand_mvoe.
	* config/bfin/bfin-protos.h (bfin_legitimate_constant_p): Declare.
	(expand_move): Adjust prototype.
	* config/bfin/bfin.c (expand_move): Now returns bool.  Handle
	invalid constants specially.
	(bfin_cannot_force_const_mem, bfin_legitimate_constant_p): New
	functions.
	(TARGET_CANNOT_FORCE_CONST_MEM): New macro.

	* config/bfin/bfin.md (call_symbol, call_value_symbol, sibcall_symbol,
	sibcall_value_symbol): Allow these patterns if
	TARGET_LEAF_ID_SHARED_LIBRARY.
	* config/bfin/bfin.c (bfin_expand_call): Allow them here as well.
	(override_options): Turn on id shared library flags if -msep-data,
	but disallow the combination of these options on the command line.
	* config/bfin/bfin.h (TARGET_LEAF_ID_SHARED_LIBRARY, MASK_SEP_DATA
	MASK_LEAF_ID_SHARED_LIBRARY, TARGET_SEP_DATA): New macros.
	(DRIVER_SELF_SPECS): -mleaf-id-shared-library implies
	-mid-shared-library.
	(TARGET_SWITCHES): Add -mleaf-id-shared-library and -msep-data.
	* doc/invoke.texi (Blackfin Options): Document new switches.

	* config/bfin/bfin.c (bfin_function_ok_for_sibcall): Handle some
	edge cases with local functions and TARGET_ID_SHARED_LIBRARY.

	* tree-ssa-loop-ivopts.c (get_address_cost): Do not artificially
	inflate costs for addresses with an out-of-bounds address.

2006-11-19  Andrew Pinski  <pinskia@gmail.com>

	PR rtl-opt/29879
	* fwprop.c (loops): Remove.
	(forward_propagate_into): Use current_loops instead of
	loops.
	(fwprop_init): Call loop_optimizer_init instead of
	flow_loops_find.
	(fwprop_done): Call loop_optimizer_finalize instead of
	flow_loops_free.
	(fwprop): Use current_loops instead of loops.

2006-11-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/8586
	* c-opts.c (c_common_handle_option): Enable -Wwrite-strings if -Wall.

2006-11-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/29114
	* pa.c (emit_move_sequence): Don't split constants with PLUS for modes
	larger than BITS_PER_WORD.

2006-11-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR fortran/27885
	PR middle-end/28176
	* stor-layout.c (set_sizetype): Limit precision of *bitsizetypes types
	to MAX_FIXED_MODE_SIZE.

2006-11-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (integer_valued_real_p): Handle fmin/fmax.
	(fold_builtin_fmin_fmax): New.
	(fold_builtin_1): Use it.

	* fold-const.c (fold_strip_sign_ops): Handle copysign.

2006-11-18  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_builtins): New array for ix86
	builtin function decls.
	(def_builtin): New function.
	(def_builtin_const): Likewise.
	(ix86_init_mmx_sse_builtins): Mark sqrt and cvt builtins const.

2006-11-18  Vladimir Makarov  <vmakarov@redhat.com>

	* doc/invoke.texi (core2): Add item.

	* config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New
	macros.
	(TARGET_CPU_CPP_BUILTINS): Add code for core2.
	(TARGET_CPU_DEFAULT_generic): Change value.
	(TARGET_CPU_DEFAULT_NAMES): Add core2.
	(processor_type): Add new constant PROCESSOR_CORE2.

	* config/i386/i386.md (cpu): Add core2.

	* config/i386/i386.c (core2_cost): New initialized variable.
	(m_CORE2): New macro.
	(x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
	x86_deep_branch, x86_partial_reg_stall, x86_use_simode_fiop,
	x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
	x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
	x86_partial_reg_dependency, x86_memory_mismatch_stall,
	x86_accumulate_outgoing_args, x86_prologue_using_move,
	x86_epilogue_using_move, x86_arch_always_fancy_math_387,
	x86_sse_partial_reg_dependency, x86_rep_movl_optimal,
	x86_use_incdec, x86_four_jump_limit, x86_schedule,
	x86_pad_returns): Add m_CORE2.
	(override_options): Add entries for Core2.
	(ix86_issue_rate): Add case for Core2.

2006-11-18  Aldy Hernandez  <aldyh@redhat.com>

	* doc/invoke.texi: Fix mno-isel typo.

2006-11-18  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/spe.md (movv4hi_internal): Add alternative for
	easy vector constant loads.

2006-11-18  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Define.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
	__NO_LWSYNC__ if TARGET_NO_LWSYNC.
	* config/rs6000/sync.md (lwsync): Emit plain sync if
	TARGET_NO_LWSYNC.

2006-11-17  DJ Delorie  <dj@redhat.com>

	* reload1.c (reloads_unique_chain): New.
	(reloads_conflict): Call it.

2006-11-17  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/predicates.md (addsubx_operand): New.
	* config/xtensa/xtensa.c (xtensa_emit_branch): New.
	(xtensa_emit_bit_branch): New.
	(xtensa_emit_movcc): New.
	* config/xtensa/xtensa.md (any_minmax): New code macro.
	(minmax): New code attribute.
	(any_cond, any_scc, any_scc_sf): New code macros.
	(*addx2, *addx4, *addx8): Delete.
	(*addx): New.
	(*subx2, *subx4, *subx8): Delete.
	(*subx): New.
	(sminsi3, uminsi3, smaxsi3, umaxsi3): Use any_minmax macro.
	(beq, bne, bgt, bge, blt, ble, bgtu, bgeu, bltu, bleu): Use any_cond.
	(*btrue, *bfalse, *ubtrue, *ubfalse): Use xtensa_emit_branch.
	(*bittrue, *bitfalse): Use xtensa_emit_bit_branch.
	(seq, sne, sgt, sge, slt, sle): Use any_scc macro.
	(movsicc_internal0, movsicc_internal1): Use xtensa_emit_movcc.
	(movsfcc_internal0, movsfcc_internal1): Likewise.
	(seq_sf, slt_sf, sle_sf): Use any_scc_sf macro.
	* config/xtensa/xtensa-protos.h: (xtensa_emit_branch): New.
	(xtensa_emit_bit_branch): New.
	(xtensa_emit_movcc): New.
	(function_arg_boundary): Add missing prototype.

2006-11-17  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md (tstsi): Delete

2006-11-17  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md (entry): Do not emit .frame directive.

2006-11-17  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2006-11-17  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm (__umulsidi3): Restore a0 on exit.

2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (execute_vrp): Do not update current_loops.
	* loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
	* doc/loop.texi: Remove documentation for cancelled functions.
	* tree-ssa-loop-im.c (loop_commit_inserts): Removed.
	(move_computations, determine_lsm): Use bsi_commit_edge_inserts
	instead.
	* cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
	(remove_path): Ensure that in delete_basic_blocks, the loops
	are still allocated.
	(add_loop): Work on valid loop structures.
	(loopify): Modify call of add_loop.
	(mfb_update_loops): Removed.
	(create_preheader): Do not update loops explicitly.
	(force_single_succ_latches, loop_version): Do not use
	loop_split_edge_with.
	(loop_split_edge_with): Removed.
	* tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
	Do not use bsi_insert_on_edge_immediate_loop.
	(split_loop_exit_edge, tree_unroll_loop): Do not use
	loop_split_edge_with.
	(bsi_insert_on_edge_immediate_loop): Removed.
	* tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops.  Do not
	use loop_split_edge_with.
	* cfghooks.c: Include cfgloop.h.
	(verify_flow_info): Verify that loop_father is filled iff current_loops
	are available.
	(redirect_edge_and_branch_force, split_block, delete_basic_block,
	split_edge, merge_blocks, make_forwarder_block, duplicate_block):
	Update cfg.
	* cfgloopanal.c (mark_irreducible_loops): Work if the function contains
	no loops.
	* modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
	loop_split_edge_with.
	(sms_schedule): Use current_loops.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
	current_loops.
	(rtl_loop_init, rtl_loop_done): Do not set current_loops.
	* tree-ssa-sink.c (execute_sink_code): Use current_loops.
	* ifcvt.c (if_convert): Ditto.
	* predict.c (predict_loops): Do not clear current_loops.
	(tree_estimate_probability): Use current_loops.
	(propagate_freq): Receive head of the region to propagate instead of
	loop.
	(estimate_loops_at_level): Do not use shared to_visit bitmap.
	(estimate_loops): New function.  Handle case current_loops == NULL.
	(estimate_bb_frequencies): Do not allocate tovisit.  Use
	estimate_loops.
	* tree-ssa-loop.c (current_loops): Removed.
	(tree_loop_optimizer_init): Do not return loops.
	(tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
	* tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
	slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
	Do not update loops explicitly.
	* function.h (struct function): Add x_current_loops field.
	(current_loops): New macro.
	* tree-if-conv.c (combine_blocks): Do not update loops explicitly.
	* loop-unroll.c (split_edge_and_insert): New function.
	(unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
	use loop_split_edge_with.
	* loop-doloop.c (add_test, doloop_modify): Ditto.
	* tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
	* cfglayout.c (copy_bbs): Do not update loops explicitly.
	* lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
	* tree-vect-transform.c (vect_transform_loop): Do not update loops
	explicitly.
	* cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
	(flow_loops_free): Do not free dfs_order and rc_order.
	(flow_loops_find): Do not set dfs_order and rc_order in loops
	structure.  Do not call loops and flow info verification.
	(add_bb_to_loop, remove_bb_from_loops): Check whether the block
	already belongs to some loop.
	* cfgloop.h (struct loops): Remove struct cfg.
	(current_loops, loop_split_edge_with): Declaration removed.
	(loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
	* tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
	Declaration removed.
	* Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
	* basic-block.h (split_edge_and_insert): Declare.
	* tree-cfg.c (remove_bb): Do not update loops explicitly.

2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29801
	* tree-ssa-ccp.c (get_symbol_constant_value): New function.
	(get_default_value): Use get_symbol_constant_value.
	(set_lattice_value): ICE when the value of the constant is
	changed.
	(visit_assignment): Ignore VDEFs of read-only variables.

2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vect-transform.c (vect_create_epilog_for_reduction): Fix
	formating.
	(vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
	vect_gen_niters_for_prolog_loop): Fold the emited expressions.

2006-11-17  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
	select subvars of var.

2006-11-17  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/29584
	* tree-ssa-forwprop.c (simplify_switch_expr): Don't
	optimize if DEF doesn't have integral type.

2006-11-16  Mike Stump  <mrs@apple.com>

	* config/darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on
	pre-darwin9 system, unless the user asks for it directly.
	(PREFERRED_DEBUGGING_TYPE): Likewise.
	* config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Likewise.
	* config.gcc: Add suppport for darwin9.h.
	* config/darwin9.h: Add.
	* doc/install.texi (Specific): Clarify darwin documentation.

2006-11-16  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (CONSTANT_ALIGNMENT): Don't over-align strings when
	optimizing for size.

2006-11-16  Mike Stump  <mrs@apple.com>

	* Makefile.in (targhooks.o): Add $(OPTABS_H).

2006-11-16  Dirk Mueller  <dmueller@suse.de>

	* tree-vrp.c (get_value_range): Use XCNEW instead
	of XNEW and memset.
	(insert_range_assertions): Use XCNEWVEC instead
	of XNEWVEC and memset.
	(vrp_initialize): Same.
	(vrp_finalize): Same.
	* tree-ssa-ccp.c (ccp_initialize): Same.
	* predict.c (tree_bb_level_predictions): Same.
	* calls.c (expand_call): Same.
	* tree-ssa-copy.c (init_copy_prop): Same.
	(fini_copy_prop): Same.
	* tree-ssa-alias.c (get_ptr_info): Use GGC_CNEW instead
	of GGC_NEW and memset.

2006-11-16  Eric Botcazou  <ebotcazou@adacore.com>

	PR middle-end/26306
	* gimplify.c (gimplify_expr): Only force a load for references to
	non-BLKmode volatile values.
	* doc/implement-c.texi (Qualifiers implementation): Document the
	interpretation of what a volatile access is.
	* doc/extend.texi (C++ Extensions): Rework same documentation.

2006-11-16  Joseph Myers  <joseph@codesourcery.com>

	* config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
	memory operand.

2006-11-16  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (abssi2): Allow Thumb as well.	 Use an SImode scratch for
	Thumb.
	(arm_neg_abssi2): Renamed from neg_abssi2.
	(thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.

2006-11-16  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.c (ix86_function_sseregparm): Fix comment:
	number of arguments passed to local functions in SSE registers is 3.

	* doc/invoke.texi (Function Attributes) [sseregparm]: Correct
	number of arguments passed in SSE registers to 3.

2006-11-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR target/29201
	* cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
	bb to ...
	(get_last_bb_insn): ... new global function.
	(basic_block.h): Declare it.
	* haifa-sched.c (create_recovery_block): Use it.

2006-11-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/29862
	* real.c (mpfr_from_real): Call mpfr_set_str before gcc_assert.

2006-11-15  Paul Brook  <paul@codesourcery.com>

	* config/arm/unwind-arm.c (_Unwind_GetDataRelBase,
	_Unwind_GetTextRelBase): Move from here ...
	* config/arm/pr-support.c (_Unwind_GetDataRelBase,
	_Unwind_GetTextRelBase): ... To here.

2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>

	* tree-ssa-loop-ivopts.c (get_address_cost): Make sure memory
	addresses we generate for testing are aligned.

2006-11-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/29788
	* fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
	to what is the const decl is a place holder for.

2006-11-15  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.opt: New target option -mx87regparm.

	* config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno
	and float_in_x87 variables. mmx_words, sse_words: Remove.
	(X87_REGPARM_MAX): Define.

	* config/i386/i386.c (override_options): Error out for
	-mx87regparm but no 80387 support.
	(ix86_attribute_table): Add x87regparm.
	(ix86_handle_cconv_attribute): Update comments for x87regparm.
	(ix86_comp_type_attributes): Check for mismatched x87regparm types.
	(ix86_function_x87regparm): New function.
	(ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
	point registers.
	(init_cumulative_args): Initialize x87_nregs and float_in_x87
	variables.
	(function_arg_advance): Process x87_nregs and x87_regno when
	floating point argument is to be passed in 80387 register.
	(function_arg): Pass XFmode arguments in 80387 registers for local
	functions.  Pass SFmode and DFmode arguments to local functions
	in 80387 registers when flag_unsafe_math_optimizations is set.

	* reg-stack.c (convert_regs_entry): Disable NaN load for
	stack registers that are used for argument passing.

	* doc/extend.texi: Document x87regparm function attribute.
	* doc/invoke.texi: Document -mx87regparm.

2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>

	* tree-flow.h (multiplier_allowed_in_address_p): Adjust prototype.
	* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): New
	arg MODE; all callers changed.  Use it to determine validity per
	machine mode instead of using Pmode for all memory references.
	(get_address_cost): Likewise add and use new arg MEM_MODE.

2006-11-15  Rask Ingemann Lambertsen <rask@sygehus.dk>
	    J"orn Rennecke <joern.rennecke@st.com>

	* combine.c (likely_spilled_retval_1): Fix masking operation.
	(likely_spilled_retval_p): Use proper pattern for call to
	likely_spilled_retval_1.

2006-11-15  Bernd Schmidt  <bernd.schmidt@analog.com>

	* tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.

	* config/bfin/bfin.c (legitimize_pic_address): Lose dead code
	that tests for CONSTANT_POOL_ADDRESS_P.

2006-11-15  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/29581
	* lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
	REPLACEMENTS, FIRSTBSI arguments.  If initial condition or
	type is different between Y and USE, create a temporary
	variable, initialize it at the beginning of the body bb
	and use it as replacement instead of Y.

2006-11-15  Paolo Bonzini  <bonzini@gnu.org>

	PR middle-end/29753
	* gimplify.c (fold_indirect_ref_rhs): Use
	STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.

2006-11-14  Richard Earnshaw  <rearnsha@arm.com>

	* expmed.c (emit_store_flag_1): New function.
	(emit_store_flag): Call it.  If we can't find a suitable scc insn,
	try a cstore insn.
	* expr.c (do_store_flag): If we can't find a scc insn, try cstore.
	Use do_compare_rtx_and_jump.
	* arm.h (BRANCH_COST): Increase to 2 on Thumb.
	* arm.md (cstoresi4): New define_expand.
	(cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
	(cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
	(cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.

2006-11-14  Caroline Tice  <ctice@apple.com>

	* dwarf2out.c (debug_pubtypes_section): New static global variable.
	(pubname_entry):  Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for
	this type.
	(pubname_table):  Redefine as a vector.
	(pubtype_table):  New static global variable, defined as a vector.
	(pubname_table_allocated): Remove static global variable.
	(pubname_table_in_use): Remove static global variable.
	(PUBNAME_TABLE_INCREMENT): Remove constant.
	(size_of_pubnames): Add parameter to deal with either pubnames or
	pubtypes, and change code to deal with table being a vector.
	(add_pubname):  Change to deal with table being a vector.
	(add_pubtype):  New function.
	(output_pubnames): Add parameter to deal with either pubnames or
	pubtypes, and change code to deal with table being a vector.
	(gen_array_type_die):  Add call to add_pubtype.
	(gen_enumeration_type_die): Add call to add_pubtype.
	(gen_struct_or_union_type_die): Add call to add_pubtype.
	(gen_subroutine_type_die): Add call to add_pubtype.
	(gen_typedef_die):  Add call to add_pubtype.
	(dwarf2out_init): Add code to initialize pubname_table and
	pubtype_table vectors; also initialize debug_pubtypes_section.
	(prune_unused_types):  Change to deal with pubnames being a vector.
	(dwarf2out_finish): Change to deal with pubnames being a vector; add
	pubnames table to call to output_pubnames;  Add code to output pubtypes
	table if DEBUG_PUBTYPES_SECTION is defined.
	* config/darwin.c (darwin_file_start):  Add DEBUG_PUBTYPES_SECTION to
	debugnames.
	* config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable.

2006-11-14  Joseph Myers  <joseph@codesourcery.com>

	* config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
	iwmmxt_nregs if TARGET_IWMMXT_ABI.
	* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
	movv2si_internal): Support moves between core registers.

2006-11-14  Eric Christopher  <echristo@apple.com>

	* configure: Regenerate with autoconf 2.59.

2006-11-14  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/27755

	* tree-ssa-pre.c: Update comments.
	(bb_bitmap_sets): Add pa_in and  deferred member.
	(BB_DEFERRED): New macro.
	(maximal_set): New variable.
	(pre_stats): Add pa_insert member.
	(bitmap_set_and): Short circuit orig == dest.
	(bitmap_set_subtract_values): New function.
	(bitmap_set_contains_expr): Ditto.
	(translate_vuses_through_block): Add phiblock argument.
	(dependent_clean): New function.
	(compute_antic_aux): Update for maximal_set changes.
	(compute_partial_antic_aux): New function.
	(compute_antic): Handle partial anticipation.
	(do_partial_partial_insertion): New function.
	(insert_aux): Handle partial anticipation.
	(add_to_sets): Add to maximal set.
	(compute_avail): Ditto.
	(init_pre): Initialize maximal_set.
	(execute_pre): Do partial anticipation if -O3+.

2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/29798

	* fwprop.c (use_killed_between): Check that DEF_INSN dominates
	TARGET_INSN before any other check.
	(fwprop_init): Always calculate dominators.
	(fwprop_done): Always free them.

2006-11-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
	COND_EXPR.

2006-11-13  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_prepare_shift): Use a separate
	temporary for intermediates.

2006-11-13  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (expand_cbranchdi4): Initialize skip_label.
	(sh_optimize_target_register_callee_saved): #if 0 the code
	using NOTE_INSN_LOOP_{BEG,END}.

2006-11-13  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (optimize_bit_field_compare): Recursively call
	fold when simplifying non-constant comparisons between bit-fields.

2006-11-13  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL
	test.
	* configure: Rebuilt.

2006-11-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* config/rs6000/cell.md: New file.
	* config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
	variable.
	(ppccell_cost): New cost matrix.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
	(rs6000_override_options): Set rs6000_always_hint to false
	for cell. Also align functions/lables/loops to 8byte
	for the Cell. Use PROCESSOR_CELL.
	(rs6000_emit_epilogue): Rename using_mfcr_multiple to
	using_mtcr_multiple.
	(rs6000_variable_issue): If the insn is a nonpipelined instruction
	on the Cell, return 0.
	(rs6000_adjust_cost): Add Cell cost adjustments.
	(is_microcoded_insn): Return true for Cell microcoded
	instructions.
	(is_nonpipeline_insn): New function.
	(rs6000_issue_rate): Add PROCESSOR_CELL.
	(rs6000_use_sched_lookahead): If Cell, then we should look ahead 8
	instructions.
	(rs6000_use_sched_lookahead_guard): New function.
	(rs6000_sched_reorder):  Reorder the ready list, if the second
	to last ready insn is a nonepipeline insn on the Cell.
	* config/rs6000/rs6000.h (processor_type): Add PROCESSOR_CELL.
	(ASM_CPU_SPEC): Add Cell.
	* config/rs6000/rs6000.md (cpu): Add Cell.
	(cell_micro): New Attr.
	Include cell.md

2006-11-13  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715
	style versions.
	* configure: Rebuilt.

2006-11-13  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_expand_lround): Handle expand_simple_binop
	return value.
	(ix86_expand_lfloorceil): Likewise.
	(ix86_expand_rint): Likewise.
	(ix86_expand_floorceildf_32): Likewise.
	(ix86_expand_floorceil): Likewise.
	(ix86_expand_rounddf_32): Likewise.
	(ix86_expand_truncdf_32): Likewise.
	(ix86_expand_round): Likewise.

2006-11-13  Carlos O'Donell  <carlos@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* gcc.c: Organize search path variables into $prefix relative,
	and well-known native. Add comments.
	(add_sysrooted_prefix): Add comment.
	(process_command): If !gcc_exec_prefix add $prefix based paths.
	If *cross_compile == '0', add native well-known paths.
	Assert tooldir_base_prefix is always relative.
	(main): If print_search_dirs, and if gcc_exec_prefix is set,
	use this value for 'install:' path.
	* Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.

2006-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c: Fix a typo in comment.

2006-11-13  Michael Matz  <matz@suse.de>

	* genemit.c (gen_expand): Allocate enough memory.

2006-11-13  Joseph Myers  <joseph@codesourcery.com>

	* config/arm/bpapi.h (TARGET_BPABI_CPP_BUILTINS): Define
	__GXX_TYPEINFO_EQUALITY_INLINE but not
	__GXX_MERGED_TYPEINFO_NAMES.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Define
	__GXX_MERGED_TYPEINFO_NAMES.
	* config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define
	__GXX_TYPEINFO_EQUALITY_INLINE.

2006-11-13  H.J. Lu  <hongjiu.lu@intel.com>
	    Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29680
	* tree-ssa-operands.c (access_can_touch_variable): Revert fix for
	PR 14784.

2006-11-12  Jason Merrill  <jason@redhat.com>
	    Andrew Pinski <pinskia@physics.uc.edu>

	PR middle-end/28915
	* gimplify.c (gimplify_init_constructor): Don't reduce TREE_CONSTANT
	vector ctors.
	* tree-cfg.c (verify_expr): Don't look into TREE_CONSTANT
	vector ctors.
	* expmed.c (make_tree): Handle CONST, SYMBOL_REF.
	* tree.c (build_vector): Handle non-_CST elements.

2006-11-12  Kaz Kojima  <kkojima@gcc.gnu.org>

	* genemit.c (gen_insn): Call gen_exp with a non-null used
	when handling multiple insns.
	(gen_expand): Likewise.
	* reorg.c (emit_delay_sequence): Copy the delay slot insn.
	* config/sh/sh.md (ashrsi2_31+1): Copy operands[0].
	(movsi_const_16bit+1): Copy operands[1].
	(call_pcrel): Copy the call_site pattern.
	(call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.

2006-11-12  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_expr_p) <PLUS_EXPR, MINUS_EXPR>: Correct/refine
	condition for transformations.  Use !HONOR_SIGN_DEPENDENT_ROUNDING
	&& !HONOR_SIGNED_ZEROS instead of flag_unsafe_math_optimizations.
	(fold_negate_expr) <PLUS_EXPR, MINUS_EXPR>: Likewise.

2006-11-12  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/29587
	* tree-ssa-structalias.c (process_constraint): Don't
	mark address taken due only to escaped vars constraint.

2006-11-12  Michael Matz  <matz@suse.de>
	    Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/29797
	* ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
	BITS_BIG_ENDIAN targets.

2006-11-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_cosh): New.
	(fold_builtin_1): Use it.
	* fold-const.c (negate_mathfn_p): Add llround, lround, round,
	trunc to the list of "odd" functions.  Also add llrint, lrint,
	rint and nearbyint when flag_rounding_math is false.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-flow.h (name_mappings_registered_p): Declare.
	* tree-into-ssa.c (name_mappings_registered_p): New function.
	* tree-cfg.c (tree_can_merge_blocks_p): Check
	name_mappings_registered_p instead of need_ssa_update_p.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop.c (tree_vectorize): Return the result of
	vectorize_loops.
	* tree-vectorizer.c (vectorize_loops): Return TODO_cleanup_cfg
	if anything changed.
	* tree-vectorizer.h (vectorize_loops): Declaration removed.
	* tree-flow.h (vectorize_loops): Declaration changed.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve
	comments.
	(issue_prefetch_ref): Move assignment to write_p out of loop.
	(determine_unroll_factor): Do not take PARAM_MAX_UNROLL_TIMES and
	SIMULTANEOUS_PREFETCHES into account.
	(loop_prefetch_arrays): Do not pass ahead to determine_unroll_factor.
	* lambda-code.c (lcm): Renamed to ...
	(least_common_multiple): ... and exported.
	* tree-flow.h (least_common_multiple): Declare.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* Makefile.in (tree-data-ref.o): Add langhooks.h dependency.
	* tree-ssa-loop-niter.c (derive_constant_upper_bound):  Follow
	ud-chains.  Handle AND_EXPR.
	(record_estimate): Record whether the estimate is realistic
	and whether it is derived from a loop exit.
	(record_nonwrapping_iv, idx_infer_loop_bounds, infer_loop_bounds_from_ref,
	infer_loop_bounds_from_array, infer_loop_bounds_from_signedness): New
	functions.
	(compute_estimated_nb_iterations): Take only realistic bounds into
	account.  Set estimate_state.  Use double_ints.
	(infer_loop_bounds_from_undefined): Call infer_loop_bounds_from_array
	and infer_loop_bounds_from_signedness.  Do not consider basic blocks
	that do not have to be always executed.
	(estimate_numbers_of_iterations_loop): Set estimate_state, and use it
	to determine whether to call infer_loop_bounds_from_undefined
	and compute_estimated_nb_iterations.
	(n_of_executions_at_most): Use double_ints.
	(free_numbers_of_iterations_estimates_loop): Set estimate_state.
	(substitute_in_loop_info): Do not replace in estimated_nb_iterations.
	* double-int.c (double_int_to_tree): Improve comment.
	(double_int_fits_to_tree_p): New function.
	* double-int.h (double_int_fits_to_tree_p): Declare.
	* tree-data-ref.c: Include langhooks.h.
	(estimate_niter_from_size_of_data, estimate_iters_using_array): Removed.
	(analyze_array_indexes): Do not call estimate_niter_from_size_of_data.
	(analyze_array): Do not pass estimate_only argument to
	analyze_array_indexes.
	(get_number_of_iters_for_loop): Build tree from the stored double_int
	value.
	(get_references_in_stmt, find_data_references_in_stmt): New functions.
	(find_data_references_in_loop): Use find_data_references_in_stmt.
	* tree-data-ref.h (struct data_ref_loc_d): New.
	(get_references_in_stmt): Declare.
	(estimate_iters_using_array): Declaration removed.
	* cfgloop.h (struct nb_iter_bound): Change type of bound to
	double_int.  Improve comments.  Add is_exit and realistic
	fields.
	(struct loop): Changed type of estimated_nb_iterations to double_int.
	Added estimate_state field.
	(record_estimate): Declaration removed.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* params.c (set_param_value): Initialize the "set" field.
	* params.h (struct param_info): Add "set" field.
	(PARAM_SET_P): New macro.
	(PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
	L1_CACHE_LINE_SIZE): New macros.
	* toplev.c (DEFPARAM): Initialize the "set" field.
	* tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
	SIMULTANEOUS_PREFETCHES): Removed.
	(PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
	(tree_ssa_prefetch_arrays): Dump the values of the parameters.
	* config/sparc/sparc.c: Include params.h.
	(sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
	L1_CACHE_LINE_SIZE parameters.
	* config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
	Removed.
	* config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
	Removed.
	* config/i386/i386.c: Include params.h.
	(k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
	(override_options): Set SIMULTANEOUS_PREFETCHES and
	L1_CACHE_LINE_SIZE parameters.
	* config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
	(OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
	L1_CACHE_LINE_SIZE parameters.
	* config/ia64/ia64.c (ia64_optimization_options): Set
	SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
	* config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
	Removed.
	* params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
	PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
	* doc/invoke.texi: Document new params.

2006-11-12  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/13827
	* fold-const.c (fold_binary) <EQ_EXPR, NE_EXPR>: Fold (X&C) op (Y&C)
	as ((X^Y)&C) op 0.

2006-11-12  Zdenek Dvorak <dvorakz@suse.cz>

	* cfgloopmanip.c (update_single_exit_for_duplicated_loop,
	update_single_exit_for_duplicated_loops): New functions.
	(duplicate_loop_to_header_edge): Use
	update_single_exit_for_duplicated_loops.
	* tree-ssa-loop-manip.c (tree_unroll_loop): Call verification
	functions only with ENABLE_CHECKING.

2006-11-12  Andreas Schwab  <schwab@suse.de>

	* except.c (sjlj_emit_function_enter): Remove unused variable.

2006-11-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (int_binop_types_match_p): New function.
	(size_binop): Relax constraint that both arguments must both have
	exactly the same sizetype type.  Instead use int_binop_types_match_p.
	(size_diffop): Likewise.

	(make_range): Use build_int_cst instead of fold_convert.
	(fold_cond_expr_with_comparison): Use build_int_cst to construct
	integer constants of the correct type.
	(fold_div_compare): Likewise.
	(fold_single_bit_test): Likewise.
	(fold_binary): Likewise.
	* stor-layout.c (layout_type) <VECTOR_TYPE>: Ensure that TYPE_SIZE
	has type bitsizetype and TYPE_SIZE_UNIT has type sizetype.

2006-11-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR rtl-opt/28812
	* alias.c (fixed_scalar_and_varying_struct_p): Don't return a
	non null value if the struct memory access is in the 0th
	aliasing set.

2006-11-12  Jie Zhang  <jie.zhang@analog.com>

	Revert
	2006-11-11  Jie Zhang  <jie.zhang@analog.com>
	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
	and __BFIN__.

	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Use builtin_define_std
	instead of builtin_define for bfin and BFIN.

2006-11-11  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
	and __BFIN__.

2006-11-11  Jan Hubicka  <jh@suse.cz>

	* extend.texi (__builtin_expect): We no longer require second argument
	to be constant.
	* gengtype.c (adjust_field_rtx_def): Drop NOTE_INSN_EXPECTED_VALUE.
	* builtins.c (expand_builtin_expect): Simplify.
	(expand_builtin_expect_jump): Kill.
	* final.c (final_scan_insn): Do not skip the removed notes.
	* insn-notes.def (LOOP_BEG, LOOP_END, REPEATED_LINE_NUMBER,
	EXPECTED_VALUE): Remove.
	* dojump.c (do_jump): Do not care about __builtin_expect.
	* predict.c (expected_value_to_br_prob): Kill.
	* function.c (expand_function_end): Do not expand
	NOTE_INSN_REPEATED_LINE_NUMBER.
	* print-rtl.c (print_rtx): Do not pretty print the removed notes.
	* expect.c (sjlj_emit_function_enter): Emit directly branch probability.
	* cfgexpand.c (add_reg_br_prob_note): Export.
	* cfgcleanup.c (rest_of_handle_jump2): Do not call
	expected_value_to_br_prob.
	* cfglayout.c (duplicate_insn_chain): Do not deal with removed notes.
	* rtl.h (add_reg_br_prob_note): Declare.

2006-11-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tree-pretty-print.c (dump_generic_node): Print sign of Inf.

2006-11-11  Jan Hubicka  <jh@suse.cz>

	* predict.c (predict_loops): Kill RTL variant.

2006-11-11  Jan Hubicka  <jh@suse.cz>

	* tree-pass.h (pass_purge_lineno_notes): Remove declaration.
	* modulo-sched.c (find_line_note): Remove.
	(loop_canon_p): Do not worry about line number notes.
	(sms_schedule): Likewise.
	* cse.c (cse_main): Likewise.
	* regmove.c (fixup_match_1): Likewise
	* function.c (emit_return_info_block): Likewise.
	(expand_function_end): Likewise.
	(thread_prologue_an_epilogue_insns): Likewise.
	* cfgrtl.c (try_redirect_by_replacing_jump, rtl_tidy_fallthru_edge):
	Likewise.
	* emit-rtl.c (find_line_note, emit_insn_after_with_line_notes,
	emit_note_copy_after): Kill.
	(emit_note_copy): Do not worry about line numbers.
	* jump.c (purge_line_number_notes): Kill.
	(pass_purge_lineno_notes): Kill.
	* cfgcleanup.c (rest_of_handle_jump2): Kill purge_line_number_notes
	call.
	* rtl.h (emit_note_copy_after, emit_insn_after_with_line_notes): Kill.
	* passes.c (init_optimization_passes): Don't purge_lineno_notes.
	* sched-ebb.c (schedule_ebbs): Don't do rm_redundant_line_notes.
	* tree-pass.h (pass_purge_lineno_notes): Kill.
	* sched-ebb.c (schedule_ebb): Don't rm_line_notes,
	rm_redundant_line_notes.
	* sched-rgb.c (schedule_region): Don't rm_line_notes,
	rm_redundant_line_notes.
	* sched-int.h (rm_line_notes, rm_redundant_line_notes): Kill.
	* haifa-sched.c: Update comment about handling notes.
 	(unlink_line_notes): Kill.
	(rm_line_notes): Kill.
	(save_line_notes): Simplify.
	(rm_redundant_line_notes): Kill.

2006-11-11  Richard Guenther  <rguenther@suse.de>

	* tree.def (FIX_CEIL_EXPR, FIX_FLOOR_EXPR, FIX_ROUND_EXPR):
	Remove unused tree codes.
	* tree-vrp.c (extract_range_from_unary_expr): Remove handling
	of FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
	* tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
	* tree.c (stabilize_reference): Likewise.
	* fold-const.c (fold_convert_const_int_from_real, operand_equal_p,
	fold_unary): Likewise.
	* tree-gimple.c (is_gimple_cast): Likewise.
	* dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* tree-eh.c (tree_could_trap_p): Likewise.
	* gimplify.c (gimplify_expr): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-cfg.c (verify_expr): Likewise.

2006-11-11  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop.c (pass_loop_prefetch): Change name to aprefetch.
	* tree-ssa-loop-prefetch.c (dump_mem_ref): Fix target file.
	(tree_ssa_prefetch_arrays): Do not dump for removed loops.

2006-11-11  Richard Sandiford  <richard@codesourcery.com>

	PR middle-end/27528
	* stmt.c (expand_asm_operands): Use EXPAND_INITIALIZER if the
	constraints accept neither registers or memories.

2006-11-11  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.h (FUNCTION_PROFILER): Don't use LABELNO.
	(NO_PROFILE_COUNTERS): Define as 1.

2006-11-10  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (operand_equal_p) <INTEGER_CST, REAL_CST, VECTOR_CST>:
	Don't check for TREE_CONSTANT_OVERFLOW when comparing constants.

2006-11-10  Peter Bergner  <bergner@vnet.ibm.com>

	* rtl.h (MEM_COPY_ATTRIBUTES): Copy MEM_POINTER.

2006-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_cos): Use fold_strip_sign_ops().
	(fold_builtin_hypot): Likewise.
	* fold-const.c (fold_strip_sign_ops): Handle "odd" builtins.

	* fold-const.c (negate_mathfn_p): Add BUILT_IN_ERF.

2006-11-10  Roger Sayle  <roger@eyesopen.com>

	* tree.c (build_int_cst_wide): Add an assertion (gcc_unreachable)
	when attempting to build INTEGER_CSTs of non-integral types.
	* expmed.c (make_tree): Use the correct type, i.e. the inner
	type, when constructing the individual elements of a CONST_VECTOR.

2006-11-10  Jan Hubicka  <jh@suse.cz>

	* cse.c (cse_process_notes): Copy the propagated value.
	* local-alloc.c (update_equiv_regs): Copy the memory RTX to be used
	in REG_EQUIV notes.
	* gcse.c (try_replace_reg): Copy the replacement.
	* i386.c (emit_i387_cw_initialization): Copy stored_mode.
	(assign_386_stack_local): Always return copied memory expression
	* function.c (instantiate_virtual_regs_in_insn): Copy the operand
	duplicates.

2006-11-10  Jan Hubicka  <jh@suse.cz>

	* final.c (final): Walk from first instruction.
	* cfglayout.c (insn_locators_initialize): Remove line number notes.

2006-11-10  Uros Bizjak  <ubizjak@gmail.com>

	PR target/29777
	* config/i386/sse.md (smulv8hi3_highpart): Change from define_insn
	to define_expand.
	(umulv8hi3_highpart): Ditto.
	(vec_widen_smult_hi_v8hi): New expander.
	(vec_widen_smult_lo_v8hi): Ditto.

2006-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (do_mpfr_arg3): New.
	(fold_builtin_1): Handle builtins fma, fmin and fmax.

2006-11-09  Eric Christopher  <echristo@apple.com>

	PR bootstrap/26892
	PR bootstrap/27814
	PR other/28994
	* configure.ac: Match powerpc*-*-darwin* for powerpc darwin checks.
	* config.gcc (powerpc64-*-darwin*): New target.
	* config.host: Ditto.
	* config/rs6000/darwin64.h: New file.
	* config/rs6000/x-darwin64: Ditto.
	* config/rs6000/host-ppc64-darwin.c: Ditto.

2006-11-09  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.c (ia64_hpux_init_libfuncs):  Use HP-UX millicode
	routines for integer division.

2006-11-09  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/t-linux (LIBGCC2_DEBUG_CFLAGS): Delete.

2006-11-09  Serge Belyshev  <belyshev@depni.sinp.msu.ru>

	PR middle-end/29726
	* fold-const.c (fold_binary) <EQ_EXPR>: Fix typo in variable name.

2006-11-09  Andreas Krebbel  <krebbel1@de.ibm.com>

	* simplify-rtx.c (avoid_constant_pool_reference): Avoid calling
	simplify_subreg with BLKmode outer mode.

2006-11-08  Brooks Moses  <brooks.moses@codesourcery.com>

	* doc/invoke.texi: Minor formatting fixes in option lists.

2006-11-08  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29738
	* tree-ssa-ccp.c: Remove UNKNOWN_VAL from comments.
	(ccp_lattice_t): Remove UNKNOWN_VAL.
	(dump_lattice_value, ccp_lattice_meet, ccp_visit_phi_node):
	Do not handle UNKNOWN_VAL.
	(get_default_value): Set initial value of virtual operands to
	VARYING.
	(get_value): Always use get_default_value on uninitialized
	operands.
	(set_value_varying, surely_varying_stmt_p): New functions.
	(set_lattice_value): Do not pass argument to get_value.
	Do not handle UNKNOWN_VAL.
	(likely_value): Follow the semantics described in the comment.
	(ccp_initialize): Use surely_varying_stmt_p.  Do not mark
	phi nodes DONT_SIMULATE_AGAIN.
	(ccp_fold): Do not pass argument to get_value.
	(fold_const_aggregate_ref, visit_assignment): Ditto.  Do not
	handle UNKNOWN_VAL.

2006-11-08  Andrew Pinski  <Andrew_Pinski@playstation.sony.com>

	* tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
	HOST_WIDE_INT_PRINT_DOUBLE_HEX instead of format buffer.

2006-11-08  Roger Sayle  <roger@eyesopen.com>

	* tree-ssa-propagate.c (set_rhs): Restructure validity tests as a
	test for inclusion rather than as a test for exclusion.
	* tree-ssa-ccp.c (fold_stmt_r) <COND_EXPR>: Use set_rhs to modify
	the condition after calling fold_binary.
	* fold-const.c (fold_inf_compare): Remove in_gimple_form check.
	(fold_binary) <LT_EXPR, GT_EXPR, LE_EXPR, GE_EXPR>: Likewise.
	* builtins.c (fold_builtin_isascii): Likewise.
	(fold_builtin_isdigit): Likewise.

2006-11-08  Carlos O'Donell  <carlos@codesourcery.com>

	* configure.ac: Do not set PREFIX_INCLUDE_DIR if $prefix is NONE.
	* configure: Regenerate.

2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>

	* tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p): Take
	enum argument instead of bool.
	(vect_analyze_operations): Call vectorizable_type_promotion.
	* tree-vectorizer.h (type_promotion_vec_info_type): New enum
	stmt_vec_info_type value.
	(supportable_widening_operation, vectorizable_type_promotion): New
	function declarations.
	* tree-vect-transform.c (vect_gen_widened_results_half): New function.
	(vectorizable_type_promotion): New function.
	(vect_transform_stmt): Call vectorizable_type_promotion.
	* tree-vect-analyze.c (supportable_widening_operation): New function.
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern):
	Add implementation.
	* tree-vect-generic.c (expand_vector_operations_1): Consider correct
	mode.

	* tree.def (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR):
	(VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR): New tree-codes.
	* tree-inline.c (estimate_num_insns_1): Add cases for above new
	tree-codes.
	* tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* optabs.c (optab_for_tree_code): Likewise.
	(init_optabs): Initialize new optabs.
	* genopinit.c (vec_widen_umult_hi_optab, vec_widen_smult_hi_optab,
	vec_widen_smult_hi_optab, vec_widen_smult_lo_optab,
	vec_unpacks_hi_optab, vec_unpacks_lo_optab, vec_unpacku_hi_optab,
	vec_unpacku_lo_optab): Initialize new optabs.
	* optabs.h (OTI_vec_widen_umult_hi, OTI_vec_widen_umult_lo):
	(OTI_vec_widen_smult_h, OTI_vec_widen_smult_lo, OTI_vec_unpacks_hi,
	OTI_vec_unpacks_lo, OTI_vec_unpacku_hi, OTI_vec_unpacku_lo): New
	optab indices.
	(vec_widen_umult_hi_optab, vec_widen_umult_lo_optab):
	(vec_widen_smult_hi_optab, vec_widen_smult_lo_optab):
	(vec_unpacks_hi_optab, vec_unpacku_hi_optab, vec_unpacks_lo_optab):
	(vec_unpacku_lo_optab): New optabs.
	* doc/md.texi (vec_unpacks_hi, vec_unpacks_lo, vec_unpacku_hi):
	(vec_unpacku_lo, vec_widen_umult_hi, vec_widen_umult_lo):
	(vec_widen_smult_hi, vec_widen_smult_lo): New.
	* doc/c-tree.texi (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR):
	(VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR, VEC_UNPACK_HI_EXPR):
	(VEC_UNPACK_LO_EXPR, VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New.

	* config/rs6000/altivec.md (UNSPEC_VMULWHUB, UNSPEC_VMULWLUB):
	(UNSPEC_VMULWHSB, UNSPEC_VMULWLSB, UNSPEC_VMULWHUH, UNSPEC_VMULWLUH):
	(UNSPEC_VMULWHSH, UNSPEC_VMULWLSH): New.
	(UNSPEC_VPERMSI, UNSPEC_VPERMHI): New.
	(vec_vperm_v8hiv4si, vec_vperm_v16qiv8hi): New patterns used to
	implement the unsigned unpacking patterns.
	(vec_unpacks_hi_v16qi, vec_unpacks_hi_v8hi, vec_unpacks_lo_v16qi):
	(vec_unpacks_lo_v8hi): New signed unpacking patterns.
	(vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi):
	(vec_unpacku_lo_v8hi): New unsigned unpacking patterns.
	(vec_widen_umult_hi_v16qi, vec_widen_umult_lo_v16qi):
	(vec_widen_smult_hi_v16qi, vec_widen_smult_lo_v16qi):
	(vec_widen_umult_hi_v8hi, vec_widen_umult_lo_v8hi):
	(vec_widen_smult_hi_v8hi, vec_widen_smult_lo_v8hi): New widening
	multiplication patterns.

	* target.h (builtin_mul_widen_even, builtin_mul_widen_odd): New.
	* target-def.h (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN):
	(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.
	* config/rs6000/rs6000.c (rs6000_builtin_mul_widen_even): New.
	(rs6000_builtin_mul_widen_odd): New.
	(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Defined.
	(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Defined.
	* tree-vectorizer.h (enum vect_relevant): New enum type.
	(_stmt_vec_info): Field relevant chaned from bool to enum
	vect_relevant.
	(STMT_VINFO_RELEVANT_P): Updated.
	(STMT_VINFO_RELEVANT): New.
	* tree-vectorizer.c (new_stmt_vec_info): Use STMT_VINFO_RELEVANT
	instead of STMT_VINFO_RELEVANT_P.
	* tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p):
	Replace calls to STMT_VINFO_RELEVANT_P with STMT_VINFO_RELEVANT,
	and boolean variable with enum vect_relevant.
	(vect_mark_stmts_to_be_vectorized): Likewise + update documentation.
	* doc/tm.texi (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): New.
	(TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.

	2006-11-08  Richard Henderson  <rth@redhat.com>

	* config/i386/sse.md (vec_widen_umult_hi_v8hi,
	vec_widen_umult_lo_v8hi): New.
	(vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si,
	vec_widen_umult_hi_v4si, vec_widen_umult_lo_v4si): New.

	* config/i386/i386.c (ix86_expand_sse_unpack): New.
	* config/i386/i386-protos.h (ix86_expand_sse_unpack): New.
	* config/i386/sse.md (vec_unpacku_hi_v16qi, vec_unpacks_hi_v16qi,
	vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi, vec_unpacku_hi_v8hi,
	vec_unpacks_hi_v8hi, vec_unpacku_lo_v8hi, vec_unpacks_lo_v8hi,
	vec_unpacku_hi_v4si, vec_unpacks_hi_v4si, vec_unpacku_lo_v4si,
	vec_unpacks_lo_v4si): New.

	2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>

	* tree-vect-transform.c (vectorizable_type_demotion): New function.
	(vect_transform_stmt): Add case for type_demotion_vec_info_type.
	(vect_analyze_operations): Call vectorizable_type_demotion.
	* tree-vectorizer.h (type_demotion_vec_info_type): New enum
	stmt_vec_info_type value.
	(vectorizable_type_demotion): New function declaration.
	* tree-vect-generic.c (expand_vector_operations_1): Consider correct
	mode.

	* tree.def (VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New tree-codes.
	* expr.c (expand_expr_real_1): Add case for VEC_PACK_MOD_EXPR and
	VEC_PACK_SAT_EXPR.
	* tree-iniline.c (estimate_num_insns_1): Likewise.
	* tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
	* optabs.c (optab_for_tree_code): Likewise.

	* optabs.c (expand_binop): In case of vec_pack_*_optabs the mode
	compared against the predicate of the result is not 'mode' (the input
	to the function) but a mode with half the size of 'mode'.
	(init_optab): Initialize new optabs.
	* optabs.h (OTI_vec_pack_mod, OTI_vec_pack_ssat, OTI_vec_pack_usat):
	New optab indices.
	(vec_pack_mod_optab, vec_pack_ssat_optab,  vec_pack_usat_optab): New
	optabs.
	* genopinit.c (vec_pack_mod_optab, vec_pack_ssat_optab):
	(vec_pack_usat_optab): Initialize new optabs.
	* doc/md.texi (vec_pack_mod, vec_pack_ssat, vec_pack_usat): New.
	* config/rs6000/altivec.md (vec_pack_mod_v8hi, vec_pack_mod_v4si): New.

	2006-11-08  Richard Henderson  <rth@redehat.com>

	* config/i386/sse.md (vec_pack_mod_v8hi, vec_pack_mod_v4si):
	(vec_pack_mod_v2di, vec_interleave_highv16qi, vec_interleave_lowv16qi):
	(vec_interleave_highv8hi, vec_interleave_lowv8hi):
	(vec_interleave_highv4si, vec_interleave_lowv4si):
	(vec_interleave_highv2di, vec_interleave_lowv2di): New.

	2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>

	* tree-vect-transform.c (vectorizable_reduction): Support multiple
	datatypes.
	(vect_transform_stmt): Removed redundant code.

	2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>

	* tree-vect-transform.c (vectorizable_operation): Support multiple
	datatypes.

	2006-11-08  Dorit Nuzman  <dorit@il.ibm.com>

	* tree-vect-transform.c (vect_align_data_ref): Removed.
	(vect_create_data_ref_ptr): Added additional argument - ptr_incr.
	Updated function documentation. Return the increment stmt in ptr_incr.
	(bump_vector_ptr): New function.
	(vect_get_vec_def_for_stmt_copy): New function.
	(vect_finish_stmt_generation): Create a stmt_info to newly created
	vector stmts.
	(vect_setup_realignment): Call vect_create_data_ref_ptr with additional
	argument.
	(vectorizable_reduction, vectorizable_assignment): Not supported yet if
	VF is greater than the number of elements that can fit in one vector
	word.
	(vectorizable_operation, vectorizable_condition): Likewise.
	(vectorizable_store, vectorizable_load): Support the case that the VF
	is greater than the number of elements that can fit in one vector word.
	(vect_transform_loop): Don't fail in case of multiple data-types.
	* tree-vect-analyze.c (vect_determine_vectorization_factor): Don't fail
	in case of multiple data-types; the smallest type determines the VF.
	(vect_analyze_data_ref_dependence): Don't record datarefs as same_align
	if they are of different sizes.
	(vect_update_misalignment_for_peel): Compare misalignments in terms of
	number of elements rather than number of bytes.
	(vect_enhance_data_refs_alignment): Fix/Add dump printouts.
	(vect_can_advance_ivs_p): Fix a dump printout

2006-11-07  Eric Christopher  <echristo@apple.com>

	* libgcc2.c (__bswapdi2): Rename from bswapDI2.
	(__bswapsi2): Ditto.
	* libgcc2.h: Remove transformation of bswap routines.
	* config/i386/i386.md (bswapsi2): New.
	(bswapdi2): Ditto.

2006-11-07  Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (c_common_attributes): Add gnu_inline attribyte.
	(handle_gnu_inline_attribute): New function.
	* c-decl.c (diagnose_mismatched_decls): Handle gnu_inline attribute.
	(merge_decls, start_decl, start_function): Likewise.
	* doc/extend.texi: Document gnu_inline attribute.

2006-11-07  Steve Ellcey  <sje@cup.hp.com>

	PR other/25028
	* config/ia64/t-hpux (LIB1ASMFUNCS):  Filter out _fixtfdi,
	_fixunstfdi, and  _floatditf

2006-11-06  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove
	prototype.
	* config/avr/avr.c (mask_one_bit_p, const_int_pow2_p): Remove.
	(output_movhi, ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out,
	lshrhi3_out, lshrsi3_out): Remove unnecessary code for handling value
	which start in an odd register.

2006-11-07  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.h (ISA_HAS_PREFETCHX): Fix typo.

2006-11-07  Josh Conner  <jconner@apple.com>

	* doc/invoke.texi (fstrict-aliasing): Move implementation
	details...
	* doc/tree-ssa.texi (Alias analysis): ...here.

2006-11-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/29610
	* tree-cfgcleanup.c (cleanup_control_flow): Honor return value
	of tree_purge_dead_eh_edges as it may free dominators.

	* g++.dg/other/pr29610.C: New testcase.

2006-11-07  David Ung  <davidu@mips.com>

	* config/mips/mips.c (mips_rtx_cost_optimize_size): New table of
	costs when optimizing for size.
	(override_options): Use mips_rtx_cost_optimize_size table for cost
	calculations.

2006-11-07  Jie Zhang  <jie.zhang@analog.com>

	* gcc.c (process_command): Treat -b as normal switch if its argument
	has no dash.

2006-11-07  David Ung  <davidu@mips.com>

	* config/mips/mips.h (ISA_HAS_PREFETCHX): Add ISA_MIPS32R2 to the
	list.

2006-11-06  Eric Christopher  <echristo@apple.com>

	* config.gcc: Add x86_64-darwin host support.
	* config.host: Ditto.
	* config/i386/darwin64.h: New file.
	* config/i386/t-darwin64: Ditto.

2006-11-06  Janis Johnson  <janis187@us.ibm.com>

	* gcc/doc/sourcebuild.texi (Test Directives): Add output-exists
	and output-exists-not.

2006-11-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/29439
	* tree-vrp.c (vrp_int_const_binop): Use the correct tree when
	checking for overflow.

2006-11-06  Jan van Dijk  <jan@etpmod.phys.tue.nl>

	* configure.ac: Fixed typo in case statement: :: changed to ;;

2006-11-06  Bob Wilson  <bob.wilson@acm.org>

	* longlong.h (__xtensa__): Add definitions for umul_ppmm, __umulsidi3,
	count_leading_zeros, and count_trailing_zeros.
	* config/xtensa/xtensa.c (TARGET_INIT_BUILTINS): Define.
	(TARGET_FOLD_BUILTIN): Define.
	(TARGET_EXPAND_BUILTIN): Define.
	(xtensa_init_builtins): New.
	(xtensa_fold_builtin): New.
	(xtensa_expand_builtin): New.
	(xtensa_rtx_costs): Add CTZ and CLZ.  Adjust costs for MULT.
	* config/xtensa/xtensa.h (TARGET_MUL32_HIGH): Define.
	(CLZ_DEFINED_VALUE_AT_ZERO): Define.
	(CTZ_DEFINED_VALUE_AT_ZERO): Define.
	* config/xtensa/xtensa.md (UNSPEC_NSAU): Remove.
	(any_extend): New code macro.
	(u, su): New code attributes.
	(<u>mulsidi3, <u>mulsi3_highpart, clzsi2, ctzsi2): New.
	(nsau): Remove; replaced by clzsi2.
	(ffssi2): Use clzsi2.
	* config/xtensa/t-xtensa (LIB1ASMFUNCS): Add _umulsidi3,
	_clzsi2, _ctzsi2, and _ffssi2.  Rename _nsau to _clz.
	* config/xtensa/lib1funcs.asm (__mulsi3): Support Mul32 option.
	(__umulsidi3, __clzsi2, __ctzsi2, __ffssi2): New.
	(__nsau_data): Guard with ifdef L_clz instead of L_nsau.

2006-11-06  Vladimir Prus  <vladimir@codesourcery.com>

	* config/arm/t-strongarm-pe: (TARGET_LIBGCC2_CFLAGS): Do no
	set inhibit_libc.
	* config/arm/t-strongarm-elf: Likewise.
	* config/arm/t-pe: Likewise.
	* config/arm/t-arm-elf: Likewise.
	* config/arm/t-xscale-elf: Likewise.
	* config/arm/t-arm-coff: Likewise.
	* config/arm/t-xscale-coff: Likewise.
	* config/arm/t-wince-pe: Likewise.

2006-11-05  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/lib1funcs-4-300.asm: Guard entire file with
	#if !__SHMEDIA__ .

2006-11-05  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/29695
	* fold-const.c (fold_ternary): Fix A < 0 ? <sign bit of A> : 0
	simplification.

2006-11-04  Uros Bizjak  <ubizjak@gmail.com>

	PR target/26915
	* config/i386/i386.c (standard_80387_constant_p): Treat -0.0 and -1.0
	as a valid 80387 constant.
	(standard_80387_constant_opcode): Return "#" for -0.0 and -1.0.
	* config/i386/i386.md (unnamed splitter): Split the load of
	constant -0.0 or -1.0  into the load of 0.0 or 1.0, followed
	by negation.

2006-11-04  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_legitimate_addres_p): Allow any constant offset
	from the soft-frame, argument and virtual registers.

2006-11-04  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (*movxf_nointeger, *movxf_integer): Enable
	patterns for standard 80387 constants.

2006-11-03  Paolo Bonzini  <bonzini@gnu.org>
	    Steven Bosscher  <steven@gcc.gnu.org>

	* fwprop.c: New file.
	* Makefile.in: Add fwprop.o.
	* tree-pass.h (pass_rtl_fwprop, pass_rtl_fwprop_with_addr): New.
	* passes.c (init_optimization_passes): Schedule forward propagation.
	* rtlanal.c (loc_mentioned_in_p): Support NULL value of the second
	parameter.
	* timevar.def (TV_FWPROP): New.
	* common.opt (-fforward-propagate): New.
	* opts.c (decode_options): Enable forward propagation at -O2.
	* gcse.c (one_cprop_pass): Do not run local cprop unless touching jumps.
	* cse.c (fold_rtx_subreg, fold_rtx_mem, fold_rtx_mem_1, find_best_addr,
	canon_for_address, table_size): Remove.
	(new_basic_block, insert, remove_from_table): Remove references to
	table_size.
	(fold_rtx): Process SUBREGs and MEMs with equiv_constant, make
	simplification loop more straightforward by not calling fold_rtx
	recursively.
	(equiv_constant): Move here a small part of fold_rtx_subreg,
	do not call fold_rtx.  Call avoid_constant_pool_reference
	to process MEMs.
	* recog.h (canonicalize_change_group): New.

	* doc/invoke.texi (Optimization Options): Document fwprop.
	* doc/passes.texi (RTL passes): Document fwprop.

2006-11-03  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1.
	(merge_decls): Implement WANT_C99_INLINE_SEMANTICS.
	(grokdeclarator): Likewise.

2006-11-03  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-dump.c (dump_enable_all): Rename local variable
	ir_type to avoid name conflicts.
	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Check for IR_GIMPLE
	instead of using ir_type().
	* profile.c (tree_register_profile_hooks): Likewise.
	* value-prof.c (tree_register_value_prof_hooks): Likewise.
	* basic-block.h (struct edge_def): Likewise.
	* config/arm/arm.c (legitimize_pic_address): Likewise.
	* coretypes.h (ir_type): New enum of all intermediate languages
	used in GCC.
	* cfghooks.c (ir_type): Rename to...
	(current_ir_type): ...this.  Distinguish between cfgrtl and
	cfglayout mode when the current IR is RTL.  Return enum ir_type.
	* cfghooks.h (ir_type): Replace with current_ir_type prototype.

2006-11-03  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_file_start): New function.
	(TARGET_ASM_FILE_START): Define.
	(arm_default_cpu): New variable.
	(arm_override_options): Set arm_default_cpu.

2006-11-03  David Ung  <davidu@mips.com>

	* config/mips/mips.h (processor_type): Removed PROCESSOR_24K, add
	PROCESSOR_24KC and PROCESSOR_24KF.
	* config/mips/mips.c (mips_cpu_info_table): Add processor names
	and aliases for 4kec/4kem/4kep/24kec/24kef/24kex/34kc/34kf/34kx.
	(mips_rtx_cost_data): Add costs for the 24kc.
	* config/mips/mips.md ("cpu"): Remove 24k, add 24kc and 24kf.
	* config/mips/24k.md: Remove references to 24k and replace with
	uses of 24kc/24kf in the appropriate reservations.
	* doc/invoke.texi (MIPS Options): Updated.

2006-11-03  J"orn Rennecke  <joern.rennecke@st.com>

	* config/sh/crt1.asm: Fix #ifdef indent.

2006-11-03  J"orn Rennecke  <joern.rennecke@st.com>
	Merged from STMicroelectronics sources:
	2006-10-06  Andrew Stubbs  <andrew.stubbs@st.com>
	  * config/sh/crt1.asm (vbr_600): Add missing #if.
	2006-08-03  J"orn Rennecke  <joern.rennecke@st.com>
	  * sh.opt (mfused-madd): New option.
	  * sh.md (mac_media, macsf3): Make conditional on TARGET_FMAC.
	2006-07-04  Andrew Stubbs  <andrew.stubbs@st.com>
	  * config/sh/crt1.asm (vbr_start): Move to new section .test.vbr.
	  Remove pointless handler at VBR+0.
	  (vbr_200, vbr_300, vbr_500): Remove pointless handler.
	  (vbr_600): Save and restore mach and macl, fpul and fpscr and fr0 to
	  fr7. Make sure the timer handler is called with the correct FPU
	  precision setting, according to the ABI.
	2006-06-14  J"orn Rennecke <joern.rennecke@st.com>
	  * config/sh/sh.opt (m2a-single, m2a-single-only): Fix Condition.
	  * config/sh/sh.h (SUPPORT_SH2A_NOFPU): Fix condition.
	  (SUPPORT_SH2A_SINGLE_ONLY, SUPPORT_SH2A_SINGLE_ONLY): Likewise.
	2006-06-09  J"orn Rennecke <joern.rennecke@st.com>
	  * sh.md (cmpgeusi_t): Change into define_insn_and_split.  Accept
	  zero as second operand.
	2006-04-28  J"orn Rennecke <joern.rennecke@st.com>
	  * config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
	  Fixed some bugs related to negative values, in particular -0
	  and overflow at -0x80000000.
	  * config/sh/divcost-analysis: Added sh4-300 figures.
	2006-04-27  J"orn Rennecke <joern.rennecke@st.com>
	  * config/sh/t-sh (MULTILIB_MATCHES): Add -m4-300* / -m4-340 options.
	2006-04-26  J"orn Rennecke <joern.rennecke@st.com>
	  * config/sh/t-sh (OPT_EXTRA_PARTS): Add libgcc-4-300.a.
	  ($(T)div_table-4-300.o, $(T)libgcc-4-300.a): New rules.
	  * config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
	New files.
	  * config/sh/embed-elf.h (LIBGCC_SPEC): Use -lgcc-4-300 for -m4-300* /
	  -m4-340.
	2006-04-24  J"orn Rennecke <joern.rennecke@st.com>
	  SH4-300 scheduling description & fixes to SH4-[12]00 description:
	  * sh.md: New instruction types: fstore, movi8, fpscr_toggle, gp_mac,
	  mac_mem, mem_mac, dfp_mul, fp_cmp.
	  (insn_class, dfp_comp, any_fp_comp): Update.
	  (push_fpul, movsf_ie, fpu_switch, toggle_sz, toggle_pr): Update type.
	  (cmpgtsf_t, "cmpeqsf_t, cmpgtsf_t_i4, cmpeqsf_t_i4): Likewise.
	  (muldf3_i): Likewise.
	  (movsi_i): Split rI08 alternative into two separate alternatives.
	  Update type.
	  (movsi_ie, movsi_i_lowpart): Likewise.
	  (movqi_i): Split ri alternative into two separate alternatives.
	  Update type.
	  * sh1.md (sh1_load_store, sh1_fp): Update.
	  * sh4.md (sh4_store, sh4_mac_gp, fp_arith, fp_double_arith): Update.
	  (mac_mem, sh4_fpscr_toggle): New insn_reservations.
	  * sh4a.md (sh4a_mov, sh4a_load, sh4a_store, sh4a_fp_arith): Update.
	  (sh4a_fp_double_arith): Likewise.
	  * sh4-300.md: New file.
	  * sh.c (sh_handle_option): Handle m4-300* options.
	  (sh_adjust_cost): Fix latency of auto-increments.
	  Handle SH4-300 differently than other SH4s.  Check for new insn types.
	  * sh.h (OVERRIDE_OPTIONS): Initilize sh_branch_cost if it has not
	  been set by an option.
	  * sh.opt (m4-300, m4-100-nofpu, m4-200-nofpu): New options.
	  (m4-300-nofpu, -m4-340, m4-300-single, m4-300-single-only): Likewise.
	  (mbranch-cost=): Likewise.
	  * superh.h (STARTFILE_SPEC): Take -m4-340 into account.

	  * sh.md (mulsf3): Remove special expansion code.
	  (mulsf3_ie): Now a define_insn_and_split.
	  (macsf3): Allow for TARGET_SH4.

	  * sh.md (cbranchsi4, cbranchdi4, cbranchdi4_i): New patterns.
	  * sh.c (prepare_cbranch_operands, expand_cbranchsi4): New functions.
	  (expand_cbranchdi4): Likewise.
	  (sh_rtx_costs): Give lower cost for certain CONST_INT values and for
	  CONST_DOUBLE if the outer code is COMPARE.
	  * sh.h (OPTIMIZATION_OPTIONS): If not optimizing for size, set
	  TARGET_CBRANCHDI4 and TARGET_EXPAND_CBRANCHDI4.
	  (OVERRIDE_OPTIONS): For TARGET_SHMEDIA, clear TARGET_CBRANCHDI4.
	  (LEGITIMATE_CONSTANT_P): Also allow DImode and VOIDmode CONST_DOUBLEs.
	  Remove redundant fp_{zero,one}_operand checks.
	  * sh.opt (mcbranchdi, mexpand-cbranchdi, mcmpeqdi): New options.
	  * sh-protos.h (prepare_cbranch_operands, expand_cbranchsi4): Declare.
	  (expand_cbranchdi4): Likewise.
	2006-04-20  J"orn Rennecke <joern.rennecke@st.com>
	  * sh.h (LOCAL_ALIGNMENT): Use DATA_ALIGNMENT.

2006-11-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* doc/md.texi (RS6000 constraints): Document H, Z, a, t, and W
	constraints.

2006-11-02  Brooks Moses  <brooks.moses@codesourcery.com>

	* doc/invoke.texi: Fix mfp-trap-mode typo.

2006-11-02  Carlos O'Donell  <carlos@codesourcery.com>

	* config/arm/linux-elf.h (NEED_INDICATE_EXEC_STACK): Define as 1.
	* arm.c (arm_file_end): If NEED_INDICATE_EXEC_STACK call
	file_end_indicate_exec_stack.
	* arm.h [!NEED_INDICATE_EXEC_STACK] (NEED_INIDCATE_EXEC_STACK):
	Define as 0.
	* lib1funcs.asm [__ELF__ && __linux__]: Emit .note.GNU-stack section
	for a non-executable stack.
	* crti.asm: Likewise.
	* crtn.asm: Likewise.
	* libunwind.S: Likewise.

2006-11-02  Ben Elliston  <bje@au.ibm.com>

	* tree-ssa.c (warn_uninit): Use expand_location variables for
	locus and declaration locus.

2006-11-02  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/27405
	* config/sh/sh.md (cmp{eq,gt,gtu}{si,di}_media): Remove.
	(cmpsi{eq,gt,gtu}{si,di}_media): Rename to
	cmp{eq,gt,gtu}{si,di}_media.
	(*cmpne0si_media): Remove.
	(*movsicc_umin): Adjust gen_cmp*_media call.
	(unordered): Change the mode of unordered and operands[1] to
	SImode.
	(seq): Adjust gen_cmp*_media calls.  Make the mode of
	a temporary result of compare SImode if needed.  If the mode
	of operands[0] is DImode, extend the temporary result to DImode.
	(slt, sle, sgt, sge, sgtu, sltu, sleu, sgue, sne): Likewise.
	(sunorderd): Change the mode of match_operand and unorderd to
	SImode.
	(cmpeq{sf,df}_media): Remove.
	(cmpsieq{sf,df}_media): Rename to cmpeq{sf,df}_media.
	(cmp{gt,ge,un}{sf,df}_media): Change the mode of match_operand
	and compare operation to SImode.

2006-11-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (sparc-sun-solaris2*): Update GMP/MPFR build
	instructions.
	(sparc64-sun-solaris2*): Likewise.

2006-11-02  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_elf_asm_constructor): Remove ATTRIBUTE_UNUSED
	from priority argument.  Use different section for non-default
	priority.
	* config/arm/elf.h: Remove definition of SUPPORTS_INIT_PRIORITY.

2006-11-02  Eric Botcazou  <ebotcazou@adacore.com>

	PR other/29639
	* except.c (switch_to_exception_section): Do not cache the section
	if named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
	and flag_function_sections is set.

2006-11-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (do_mpfr_sincos): New.
	(fold_builtin_1): Use it to fold builtin sincos.

2006-11-01  Roger Sayle  <roger@eyesopen.com>

	* config/darwin.h (CPP_SPEC): Handle -pthread, transforming
	it into -D_REENTRANT.

2006-11-01  Roger Sayle  <roger@eyesopen.com>

	* configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine
	whether the assembler supports taking the difference of symbols in
	different sections.  On x86/Solaris, GAS does but Solaris as doesn't.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/i386/sol2-10.h (JUMP_TABLES_IN_TEXT_SECTION): Define if
	the assembler doesn't support taking the difference of symbols in
	different sections, i.e. we're using the native solaris assembler.

2006-11-01  Pete Steinmetz  <steinmtz@us.ibm.com>
	    Peter Bergner  <bergner@vnet.ibm.com>

	* doc/invoke.texi: Add cpu_type power6x
	(RS/6000 and PowerPC Options): Add -mmfpgpr.
	* config.gcc: Add cpu_type power6x.
	* configure.ac: Add test for mf{t,f}gpr instructions.
	(HAVE_AS_MFPGPR): New.
	* config.in: Regenerate.
	* configure: Regenerate.
	* config/rs6000/aix52.h (ASM_CPU_SPEC): Add power6x.
	* config/rs6000/rs6000.md (define_attr "type"): Add insert_dword,
	shift,trap,var_shift_rotate,cntlz,exts, var_delayed_compare, mffgpr
	and mftgpr attributes.
	(define_attr "cpu"): Add power6.
	Change instruction sequences to use new attributes.
	(floatsidf2,fix_truncdfsi2): use TARGET_MFPGPR.
	(fix_truncdfsi2_mfpgpr): New.
	(floatsidf_ppc64_mfpgpr): New.
	(floatsidf_ppc64): Added !TARGET_MFPGPR condition.
	(movdf_hardfloat64_mfpgpr,movdi_mfpgpr): New.
	(movdf_hardfloat64): Added !TARGET_MFPGPR condition.
	(movdi_internal64): Added !TARGET_MFPGPR and related conditions.
	(fix_truncdfsi2): Use gpc_reg_operand constraint.
	* config/rs6000/{6xx.md,power4.md,8540.md,603.md,mpc.md,
	7xx.md,rios2.md,7450.md,440.md,rios1.md,rs64.md,power5.md,40x.md}:
	Add descriptions for insert_dword, shift,trap,var_shift_rotate,
	cntlz,exts and var_delayed_compare.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
	_ARCH_PWR6X, if features enabled.
	* config/rs6000/rs6000.opt (mmfpgpr): New.
	* config/rs6000/rs6000.c (rs6000_align_branch_targets): New variable.
	(cached_can_issue_more): New variable.
	(processor_costs): Add power6_cost.
	(rs6000_sched_init): New function.
	(is_dispatch_slot_restricted): Deleted.
	(set_to_load_agen): New function.
	(is_load_insn,is_store_insn): New functions.
	(adjacent_mem_locations): New function.
	(insn_must_be_first_in_group): New function.
	(insn_must_be_last_in_group): New function.
	(rs6000_sched_reorder): New function.
	(rs6000_sched_reorder2): New function.
	(TARGET_SCHED_INIT,TARGET_SCHED_REORDER,
	TARGET_SCHED_REORDER2): Define.
	(processor_target_table): Use PROCESSOR_POWER6 for power6.
	Add power6x. Add MASK_MFPGPR for power6x.
	(POWERPC_MASKS): Add MASK_MFPGPR.
	(rs6000_override_options): Set rs6000_always_hint to false
	for power6.  Set rs6000_align_branch_targets. Replace
	rs6000_sched_groups check with rs6000_align_branch_targets.
	Use PROCESSOR_POWER6.
	(last_scheduled_insn): New variable.
	(load_store_pendulum): New variable.
	(rs6000_variable_issue): Set last_scheduled_insn and
	cached_can_issue_more.
	(rs6000_adjust_cost): Add power6 cost adjustments.
	(rs6000_adjust_priority): Replace is_dispatch_slot_restricted
	with insn_must_be_first_in_group. Add power6 priority adjustments.
	(rs6000_issue_rate): Add CPU_POWER6.
	(insn_terminates_group_p): Use insn_must_be_{first,last}_in_group.
	* config/rs6000/rs6000.h (processor_type): Add PROCESSOR_POWER6.
	(TARGET_MFPGPR): New.
	(SECONDARY_MEMORY_NEEDED): Use TARGET_MFPGPR.
	(ASM_CPU_SPEC): Add power6x.
	(SECONDARY_MEMORY_NEEDED): Added mode!=DFmode and mode!=DImode
	conditions.
	* config/rs6000/power6.md: New file.

2006-11-01  Adam Nemet  <anemet@caviumnetworks.com>

	* tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
	HOST_WIDE_INT_PRINT to print high and low parts.  Use
	HOST_BITS_PER_WIDE_INT for the width of HOST_WIDE_INT.  When
	printing a hexadecimal number prefix it with 0x.

2006-11-01  Chris Johns <chris@contemporary.net.au>

	PR bootstrap/28400
	* Makefile.in (install-driver): Use exeext when installing
	$target-gcc-$version.

2006-11-01	Douglas Gregor <doug.gregor@gmail.com>

	* c-common.c (flag_cpp0x): New.
	* c-common.h (flag_cpp0x): New.
	* c-cppbuiltin.c (c_cpp_builtins): If C++0x extensions are
	supported, define __GXX_EXPERIMENTAL_CPP0X__.
	* c-opts.c (set_std_cxx0x): New.
	(c_common_handle_option): Handle -std=c++0x, -std=gnu++0x.
	* c.opt (std=c++0x): Document.
	(std=gnu++0x): Ditto.
	* doc/cpp.texi: Document __GXX_EXPERIMENTAL_CPP0X__.
	* doc/invoke.texi: Document -std=c++0x, -std=gnu++0x.

2006-11-01  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_expand_rint): Fix issues with
	signed zeros.
	(ix86_expand_floorceildf_32): Likewise.
	(ix86_expand_floorceil): Likewise.
	(ix86_expand_trunc): Likewise.

2006-10-31  Andrew Pinski  <pinskia@gmail.com>

	* doc/invoke.texi (-fkeep-inline-functions): Change "GNU C"
	to "GNU C89".

2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>

	* target.h (targetm.cxx.use_atexit_for_cxa_atexit): New target
	hook.
	* target-def.h: (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Define
	default.
	* config/i386/mingw32.h (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT):
	Override default.
	* doc/tm.texi (TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT): Document.
	* configure.ac (use_cxa_atexit): As a special case, don't test
	for libc definition of __cxa_atexit on mingw32
	* configure: Regenerate.
	* config.gcc (i[34567]86-pc-mingw32): Default to
	enable__cxa_atexit=yes.

2006-11-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (gamma, lgamma): Use ATTR_MATHFN_FPROUNDING_STORE.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	PR 23067
	* c-decl.c (start_struct): Don't create self-containing
	structures.
	* config/rs6000/rs6000.c (darwin_rs6000_special_round_type_align):
	New.
	* config/rs6000/rs6000-protos.h
	(darwin_rs6000_special_round_type_align): New.
	* config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Rewrite.
	(ROUND_TYPE_ALIGN): Use darwin_rs6000_special_round_type_align.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* toplev.c (compile_file): Call final_write_globals
	even if there have been errors.

2006-10-31  Eric Christopher  <echristo@apple.com>
	    Falk Hueffner  <falk@debian.org>

	* doc/extend.texi (__builtin_bswap32): Document.
	(__builtin_bswap64): Ditto.
	* doc/libgcc.texi (bswapsi2): Document.
	(bswapdi2): Ditto.
	* doc/rtl.texi (bswap): Document.
	* optabs.c (expand_unop): Don't widen a bswap.
	(init_optabs): Init bswap. Set libfuncs explicitly
	for bswapsi2 and bswapdi2.
	* optabs.h (OTI_bswap): New.
	(bswap_optab): Ditto.
	* genopinit.c (optabs): Handle bswap_optab.
	* tree.h (tree_index): Add TI_UINT32_TYPE and
	TI_UINT64_TYPE.
	(uint32_type_node): New.
	(uint64_type_node): Ditto.
	* tree.c (build_common_tree_nodes_2): Initialize
	uint32_type_node and uint64_type_node.
	* builtins.c (expand_builtin_bswap): New.
	(expand_builtin): Call.
	(fold_builtin_bswap): New.
	(fold_builtin_1): Call.
	* fold-const.c (tree_expr_nonnegative_p): Return true
	for bswap.
	* builtin-types.def (BT_UINT32): New.
	(BT_UINT64): Ditto.
	(BT_FN_UINT32_UINT32): Ditto.
	(BT_FN_UINT64_UINT64): Ditto.
	* builtins.def (BUILT_IN_BSWAP32): New.
	(BUILT_IN_BSWAP64): Ditto.
	* rtl.def (BSWAP): New.
	* genattrtab.c (check_attr_value): New.
	* libgcc2.c (__bswapSI2): New.
	(__bswapDI2): Ditto.
	* libgcc2.h (__bswapSI2): Declare.
	(__bswapDI2): Ditto.
	* mklibgcc.in (lib2funcs): Add _bswapsi2 and _bswapdi2.
	* simplify-rtx.c (simplify_const_unary_operation): Return
	0 for BSWAP.
	* libgcc-std.ver (__bwapsi2): Add.
	(__bswapdi2): Ditto.
	* reload1.c (eliminate_regs_1): Add bswap.
	(elimination_effects): Ditto.
	* config/i386/i386.h (x86_bswap): New.
	(TARGET_BSWAP): Use.
	* config/i386/i386.c (x86_bswap): Set.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* coverage.c (coverage_checksum_string): Update comment.
	* dwarf2out.c (switch_to_eh_frame_section): Update for removal
	of get_file_function_name.
	* cgraphunit.c (cgraph_build_static_cdtor): Update for rename
	of get_file_function_name_long.
	* tree.c (get_file_function_name): Rename from
	get_file_function_name_long; improve comment; handle 'I' and 'D'
	specially when the target has ctor/dtor support; remove special
	handling for 'F'.
	(get_file_function_name): Remove.
	* tree.h (get_file_function_name): Rename from
	get_file_function_name_long.
	(get_file_function_name): Remove prototype.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Remove.
	* config/darwin.h (PREFERRED_DEBUGGING_TYPE): Set to DWARF2_DEBUG.

	* config/darwin.h (LINK_COMMAND_SPEC): Don't do weird things with -@.
	Call dsymutil when compiling and linking one or more source files
	in one step.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	PR 15834
	* config/darwin.h (NO_IMPLICIT_EXTERN_C): Define.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on
	inline static functions in c99 mode.

	PR 16622
	* doc/extend.texi (Inline): Update.
	* c-tree.h (struct language_function): Remove field 'extern_inline'.
	* c-decl.c (current_extern_inline): Delete.
	(pop_scope): Adjust test for an undefined nested function.
	Add warning about undeclared inline function.
	(diagnose_mismatched_decls): Update comments.  Disallow overriding
	of inline functions in a translation unit in C99.  Allow inline
	declarations in C99 at any time.
	(merge_decls): Boolize variables.  Handle C99 'extern inline'
	semantics.
	(grokdeclarator): Set DECL_EXTERNAL here for functions.  Handle
	C99 inline semantics.
	(start_function): Don't clear current_extern_inline.  Don't set
	DECL_EXTERNAL.
	(c_push_function_context): Don't push current_extern_inline.
	(c_pop_function_context): Don't restore current_extern_inline.

	PR 11377
	* c-typeck.c (build_external_ref): Warn about static variables
	used in extern inline functions.
	* c-decl.c (start_decl): Warn about static variables declared
	in extern inline functions.

2006-10-31  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/23470
	* tree.h (tree_expr_nonnegative_p): Return "bool" instead of "int".
	* fold-const.c (tree_expr_nonnegative_p): Likewise.  Consider
	pow(x,y) and powi(x,y) to be nonnegative if either x is nonnegative
	or y is an even integer.

2006-10-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/24071
	* gthr-posix.h (__gthread_active_p): New implementation on Solaris.
	* gthr-posix95.h (__gthread_active_p): Likewise.

2006-10-31  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
	acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2,
	expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2,
	exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2,
	ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2,
	lround<mode>di2, lround<mode>si2, floorxf2, floordf2, floorsf2,
	lfloor<mode>di2, lfloor<mode>si2, ceilxf2, ceildf2, ceilsf2,
	btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on
	!optimize_size.

2006-10-31  Steven Bosscher  <steven@gcc.gnu.org>

	* opts.c (decode_options): Disable CSE skip blocks.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	* c-common.h (strict_aliasing_warning): Fix whitespace.
	* c-decl (start_function): Move code for main decl warning ..
	* c-common.c (check_main_parameter_types): .. here.
	* c-common.h (check_main_parameter_types): Declare.

2006-10-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (fold_builtin_1): Evaluate tgamma using MPFR.

2006-10-30  Pete Steinmetz  <steinmtz@us.ibm.com>

	* recog.c (store_data_bypass_p): Add support to allow IN_INSN to
	be a PARALLEL containing sets.	Return false when out_pat is not
	a PARALLEL insn.

2006-10-30  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.md (mul<mode>3): Split into...
	(mulsi3, muldi3): ...these separate patterns.

2006-10-30  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/linux64.h (DRIVER_SELF_SPECS): Use a single spec,
	but with each set of options separated by spaces.

2006-10-30  J"orn Rennecke  <joern.rennecke@st.com>

	* unwind-dw2.c (uw_init_context_1): Fix test that checks if
	dwarf_reg_size_table has been initialized.

2006-10-30  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_mathfn_3): Correct coding style.
	* ddg.c (print_ddg_edge): Likewise.
	* dwarf2out.c (prune_unused_types_walk): Likewise.
	* ifcvt.c (noce_try_cmove_arith): Likewise.
	* langhooks.c (add_builtin_function): Likewise.
	* reg-stack.c (subst_stack_regs_pat): Likewise.
	* tree.c (expanded_location): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.

2006-10-30  David Daney  <ddaney@avtrex.com>

	* config/mips/linux.h (NO_SHARED_SPECS): Correct syntax error.

2006-10-30  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/29637
	* tree.c (make_vector_type): Don't recurse if TYPE_MAIN_VARIANT
	of the innertype is the innertype itself.

2006-10-30  Danny Smith  <dannysmith@users.sourceforge.net>

	* dwarf2out.c (file_name_acquire): Correct typo.

2006-10-29  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (tree_value_handle): Remove struct value_set declaration.
	Change value_set to bitmap_set.
	* tree-pretty-print.c (dump_generic_node): Use has_stmt_ann.
	* tree-vn.c (get_value_handle): Made inline and moved to
	tree-flow-inline.h.
	* tree-flow-inline.h: (has_stmt_ann): New function.
	* tree-ssa-pre.c (expressions): New variable.
	(next_expression_id): Ditto.
	(alloc_expression_id): New function.
	(struct value_set): Remove.
	(get_expression_id): New function.
	(get_or_alloc_expression_id): Ditto.
	(expression_for_id): Ditto.
	(clear_expression_ids): Ditto.
	(FOR_EACH_EXPR_ID_IN_SET): New macro.
	(bb_value_sets): Renamed to bb_bitmap_sets.
	All value sets replaced with bitmap_sets.
	Add visited member.
	(BB_VISITED): New macro.
	(postorder): New variable.
	(add_to_value): Removed.
	(value_exists_in_set_bitmap): Ditto.
	(value_insert_into_set_bitmap): Ditto.
	(set_new): Ditto.
	(set_copy): Ditto.
	(set_remove): Ditto.
	(set_contains_value): Ditto.
	(insert_into_set): Ditto.
	(set_equal): Ditto.
	(find_leader): Ditto.
	(bitmap_set_subtract_from_value_set): Ditto.
	(value_insert_into_set): Ditto.
	(print_value_set): Ditto.
	(debug_value_set): Ditto.
	(constant_expr_p): New function.
	(bitmap_remove_from_set): Ditto.
	(bitmap_insert_into_set): Ditto.
	(bitmap_set_free): Ditto.
	(vh_compare): Ditto.
	(sorted_array_from_bitmap_set): Ditto.
	(bitmap_set_subtract): Ditto.
	(bitmap_set_equal): Ditto.
	(debug_bitmap_set): Ditto.
	(find_leader_in_sets): Ditto.
	(bitmap_set_replace_value): Modify for bitmapped sets.
	(phi_translate): Ditto.
	(phi_translate_set): Ditto.
	(bitmap_find_leader): Ditto.
	(valid_in_sets): Ditto.
	(union_contains_value): Ditto.
	(clean): Ditto.
	(compute_antic_aux): Ditto.  Mark changed blocks.
	(compute_antic): Ditto. Iterate in postorder and only over
	changing blocks.
	(compute_rvuse_and_antic_safe): Reuse postorder.
	(create_component_ref_by_pieces): Modify for bitmapped sets.
	(find_or_generate_expression): Ditto.
	(create_expression_by_pieces): Ditto.
	(insert_into_preds_of_block): Ditto.
	(changed_blocks): New variable.
	(do_regular_insertion): Broken out from insert_aux.
	(insert_aux): Modified for bitmapped sets.
	(find_existing_value_expr): New function.
	(create_value_expr_from): Use it.
	(insert_extra_phis): Removed.
	(print_bitmap_set): Renamed from bitmap_print_value_set.
	(compute_avail): Handle RETURN_EXPR.
	(init_pre): Modify for bitmapped sets.
	* tree-flow.h (has_stmt_ann): New function.

2006-10-29  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_floor): Check for the availability of
	the C99 trunc function before transforming floor into trunc.

2006-10-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_hypot): Rearrange recursive
	transformation before others, and also do ABS_EXPR.  When
	necessary, check flag_unsafe_math_optimizations.  When necessary,
	add fabs.

2006-10-29  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_comparison): Fold ~X op ~Y as Y op X.
	Fold ~X op C as X op' ~C, where op' is the swapped comparison.
	(fold_binary): ~X eq/ne C is now handled in fold_comparison.
	Fold -X eq/ne -Y as X eq/ne Y.

2006-10-29  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.md (mul<mode>3): Check ISA_HAS_MUL3 rather than
	GENERATE_MULT3_<MODE>.  Restrict the test to SImode.  Use ISA_HAS_MUL3
	rather than GENERATE_MULT3_SI in the various define_peephole2s.
	(mulsi3_mult3): Depend on ISA_HAS_MUL3 rather than GENERATE_MULT3_SI.
	Use an inclusive test for "mult" rather than "mul".
	(rotr<mode>3): Depend on ISA_HAS_ROR.
	* config/mips/mips.h (GENERATE_MULT3_SI): Delete in favor of
	ISA_HAS_MUL3.
	(GENERATE_MULT3_DI): Delete.
	(ISA_HAS_64BIT_REGS): Use consistent formatting.
	(ISA_HAS_MUL3): New macro.
	(ISA_HAS_CONDMOVE, ISA_HAS_8CC): Use consistent formatting.
	(ISA_HAS_FP4, ISA_HAS_MADD_MSUB, ISA_HAS_NMADD_NMSUB): Likewise.
	(ISA_HAS_CLZ_CLO): Likewise.
	(ISA_HAS_DCLZ_DCLO): Delete.
	(ISA_HAS_MULHI, ISA_HAS_MULS, ISA_HAS_MSAC): Require !TARGET_MIPS16.
	(ISA_HAS_MACC): Require !TARGET_MIPS16 for all ISAs, not just
	the VR4120 and VR4130.
	(ISA_HAS_MACCHI): Use consistent formatting.
	(ISA_HAS_ROTR_SI, ISA_HAS_ROTR_DI): Delete in favor of...
	(ISA_HAS_ROR): ...this new macro.
	(ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX): Use consistent formatting.
	(ISA_HAS_SEB_SEH, ISA_HAS_EXT_INS): Likewise.
	(ISA_HAS_LOAD_DELAY): Use ISA_MIPS1.

2006-10-29  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/15458
	* fold-const.c (fold_binary): Optimize ~X ^ C as X ^ ~C, where C
	is a constant.

2006-10-29  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386-protos.h (ix86_expand_trunc): Declare.
	(ix86_expand_truncdf_32): Likewise.
	* config/i386/i386.c (ix86_expand_trunc): New function expanding
	trunc inline for SSE math and -fno-trapping-math and if not
	optimizing for size.
	(ix86_expand_truncdf_32): Same for DFmode on 32bit archs.
	* config/i386/i386.md (btruncsf2, btruncdf2): Adjust expanders
	for expanding btrunc inline for SSE math.

2006-10-29  Joseph Myers  <joseph@codesourcery.com>

	* config.gcc (i[34567]86-*-linux*): Handle --enable-targets=all.
	Handle tuning for bi-arch i[34567]86-*-linux* like that for
	i[34567]86-*-solaris2.1[0-9]*.
	* config/i386/linux64.h (TARGET_VERSION, MULTILIB_DEFAULTS):
	Define conditionally depending on TARGET_64BIT_DEFAULT.
	(SPEC_32, SPEC_64): Define.
	(LINK_SPEC): Use them.
	* doc/install.texi (--enable-targets=all): Document for x86-linux.

2006-10-29  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386-protos.h (ix86_expand_round): Declare.
	(ix86_expand_rounddf_32): Likewise.
	* config/i386/i386.c (ix86_expand_round): New function expanding
	round inline for SSE math and -fno-trapping-math and if not
	optimizing for size.
	(ix86_expand_rounddf_32): Same for DFmode on 32bit archs.
	* config/i386/i386.md (rounddf2, roundsf2): New pattern expanding
	round via ix86_expand_round.

2006-10-29  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386-protos.h (ix86_expand_floorceil): Declare.
	(ix86_expand_floorceildf_32): Likewise.
	* config/i386/i386.c (ix86_expand_sse_compare_mask): New
	static helper function.
	(ix86_expand_floorceil): Expander for floor and ceil to SSE
	math.
	(ix86_expand_floorceildf_32): Same for DFmode on 32bit archs.
	* config/i386/i386.md (floordf2): Adjust to enable floor
	expansion via ix86_expand_floorceil if TARGET_SSE_MATH and
	-fno-trapping-math is enabled and if not optimizing for size.
	(floorsf2, ceildf2, ceilsf2): Likewise.
	* config/i386/sse.md (sse_maskcmpsf3): New insn.
	(sse2_maskcmpdf3): Likewise.

2006-10-29  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_mathfn): Expand nearbyint as
	rint in case -fno-trapping-math is enabled.
	* config/i386/i386-protos.h (ix86_expand_rint): Declare.
	* config/i386/i386.c (ix86_gen_TWO52): New static helper function.
	(ix86_expand_sse_fabs): Likewise.
	(ix86_expand_rint): New function expanding rint to x87 or SSE math.
	* config/i386/i386.md (rintdf2): Enable for SSE math if
	-fno-trapping-math is enabled, use ix86_expand_rint for expansion.
	(rintsf2): Likewise.

2006-10-29  Richard Guenther  <rguenther@suse.de>

	* genopinit.c (optabs): Change lfloor_optab and lceil_optab
	to conversion optabs.
	* optabs.c (init_optabs): Initialize lfloor_optab and lceil_optab
	as conversion optab.
	* optabs.h (enum optab_index): Remove OTI_lfloor and OTI_lceil.
	(enum convert_optab_index): Add COI_lfloor and COI_lceil.
	(lfloor_optab, lceil_optab): Adjust defines.
	* builtins.c (expand_builtin_int_roundingfn): Adjust for
	lfloor and lceil optabs now being conversion optabs.
	* config/i386/i386-protos.h (ix86_expand_lfloorceil): Declare.
	* config/i386/i386.c (ix86_expand_sse_compare_and_jump):
	New static helper function.
	(ix86_expand_lfloorceil): New function to expand lfloor and
	lceil inline.
	* config/i386/i386.md (lfloor<mode>2): Split into ...
	(lfloorxf<mode>2): ... x87 variant
	(lfloor<mode>di2, lfloor<mode>si2): ... and SSE variants
	using ix86_expand_lfloorceil.
	(lceil<mode>2, lceilxf<mode>2, lceil<mode>di2, lceil<mode>si2):
	Likewise.
	* doc/md.texi (lfloorMN, lceilMN): Document.

2006-10-29  Richard Sandiford  <richard@codesourcery.com>

	* configure.ac (HAVE_AS_NO_SHARED): New AC_DEFINE.  Test for the
	-mno-shared assembler option on mips targets.
	* configure, config.in: Regenerate.
	* config/mips/linux.h (NO_SHARED_SPECS): New macro.
	(DRIVER_SELF_SPECS): Define to NO_SHARED_SPECS if non-empty.
	* config/mips/linux64.h (DRIVER_SELF_SPECS): Include NO_SHARED_SPECS.

2006-10-29  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (mips_classify_symbol): Test DECL_WEAK as well
	as TREE_PUBLIC when deciding whether to return SYMBOL_GOT_GLOBAL.

2006-10-29  Kazu Hirata  <kazu@codesourcery.com>

	* config/darwin.c, config/darwin.opt, config/ia64/itanium1.md,
	config/ia64/itanium2.md, real.c, tree-ssa-structalias.c: Fix
	comment typos.

2006-10-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (do_mpfr_arg2, fold_builtin_hypot): New.
	(fold_builtin_pow): Evaluate constant arguments at compile-time
	using MPFR.
	(fold_builtin_1): Handle BUILT_IN_ATAN2 and BUILT_IN_HYPOT.
	(do_mpfr_ckconv): New helper function.
	(do_mpfr_arg1): Use do_mpfr_ckconv.
	(do_mpfr_arg2): New.

2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/29271
	* doc/invoke.texi (-fdump-rtl-sched2) Fix file extension number.
	(-fdump-rtl-sched): Rename to ..
	(-fdump-rtl-sched1): here.  Also fix file extension number.

2006-10-28  Richard Guenther  <rguenther@suse.de>

	* fold-const.c (maybe_canonicalize_comparison): Fix code
	to match comment.

2006-10-28  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.h (GENERAL_REGNO_P): Use STACK_POINTER_REGNUM.
	(NON_QI_REG_P): Use IN_RANGE.
	(REX_INT_REGNO_P): Use IN_RANGE.
	(FP_REGNO_P): Use IN_RANGE.
	(SSE_REGNO_P): Use IN_RANGE.
	(REX_SSE_REGNO_P): Use IN_RANGE.
	(MMX_REGNO_P): Use IN_RANGE.
	(STACK_REGNO_P): New macro.
	(STACK_REG_P): Use STACK_REGNO_P.
	(NON_STACK_REG_P): Use STACK_REGNO_P.
	(REGNO_OK_FOR_INDEX_P): Use REX_INT_REGNO_P.
	(REGNO_OK_FOR_BASE_P): Use GENERAL_REGNO_P.
	(REG_OK_FOR_INDEX_NONSTRICT_P): Use REX_INT_REGNO_P.
	(REG_OK_FOR_BASE_NONSTRICT_P): Use GENERAL_REGNO_P.
	(HARD_REGNO_RENAME_OK): Use !IN_RANGE.

2006-10-28  Eric Botcazou  <ebotcazou@adacore.com>

	* except.h (output_function_exception_table): Add 'const char*' param.
	* except.c (switch_to_exception_section): Add 'const char*' param.
	If named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
	and flag_function_sections is set, use a function-specific section.
	(output_function_exception_table): Add 'const char*' param.
	Adjust call to switch_to_exception_section.
	* final.c (rest_of_handle_final): Adjust calls to
	output_function_exception_table.
	* configure.ac (HAVE_LD_EH_GC_SECTIONS): New check.
	* config.in: Regenerate.
	* configure: Likewise.

2006-10-28  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26899
	* fold-const.c (maybe_canonicalize_comparison_1): Helper
	for maybe_canonicalize_comparison.
	(maybe_canonicalize_comparison): New function for canonicalizing
	comparison trees.
	(fold_comparison): Call it to canonicalize comparisons with
	constants involved.

2006-10-28  Richard Guenther  <rguenther@suse.de>

	PR target/28806
	* builtins.c (expand_builtin_int_roundingfn_2): Expand
	BUILT_IN_LROUND and BUILT_IN_LLROUND from here.
	(expand_builtin): Adjust likewise.
	* genopinit.c (optabs[]): Add lround optab.
	* optabs.c (init_optabs): Initialize lround_optab.
	* optabs.h (enum convert_optab_index): Add COI_lround.
	(lround_optab): Define.
	* config/i386/i386-protos.h (ix86_expand_lround): Declare.
	* config/i386/i386.c (ix86_sse_copysign_to_positive): New
	static function.
	(ix86_expand_lround): New function.
	* config/i386/i386.md (lround<mode>di2, lround<mode>si2):
	New expanders.
	* doc/md.texi (lroundMN2): Document.

2006-10-28 Uros Bizjak <uros@kss-loka.si>

	PR target/29377
	* config/h8300/h8300.c (h8300_emit_stack_adjustment): Change "size"
	argument to HOST_WIDE_INT.  Update function prototype.
	(round_frame_size): Change return type to HOST_WIDE_INT.  Change
	"size" argument to HOST_WIDE_INT.  Update function prototype.

2006-10-28 Uros Bizjak <uros@kss-loka.si>

	* config/i386/i386.c (output_387_ffreep): Create output from a
	template string for !HAVE_AS_IX86_FFREEP.

2006-10-27  Eric Christopher  <echristo@apple.com>

	* config/darwin.c: Fix formatting and grammar.

2006-10-27  Jan Hubicka  <jh@suse.cz>

	* builtins.c (fold_builtin): Don't generate NOP_EXPR that is going
	to be thrown away soon when IGNORE is set.
	* tree-ssa-ccp.c (convert_to_gimple_builtin): Add IGNORE argument
	indicating when return value shall not be computed.
	* gimplify.c (internal_get_tmp_var): Avoid random tree sharing.

2006-10-27  Vladimir Makarov  <vmakarov@redhat.com>

	* config/i386/i386.h (TARGET_GEODE):
	(TARGET_CPU_CPP_BUILTINS): Add code for geode.
	(TARGET_CPU_DEFAULT_geode): New macro.
	(TARGET_CPU_DEFAULT_k6, TARGET_CPU_DEFAULT_k6_2,
	TARGET_CPU_DEFAULT_k6_3, TARGET_CPU_DEFAULT_athlon,
	TARGET_CPU_DEFAULT_athlon_sse, TARGET_CPU_DEFAULT_k8,
	TARGET_CPU_DEFAULT_pentium_m, TARGET_CPU_DEFAULT_prescott,
	TARGET_CPU_DEFAULT_nocona, TARGET_CPU_DEFAULT_generic): Increase
	the macro values.
	(TARGET_CPU_DEFAULT_NAMES): Add geode.
	(processor_type): Add PROCESSOR_GEODE.

	* config/i386/i386.md: Include geode.md.
	(cpu): Add geode.

	* config/i386/i386.c (geode_cost): New initialized global
	variable.
	(m_GEODE, m_K6_GEODE): New macros.
	(x86_use_leave, x86_push_memory, x86_deep_branch, x86_use_sahf,
	x86_use_himode_fiop, x86_promote_QImode, x86_add_esp_4,
	x86_add_esp_8, x86_rep_movl_optimal, x86_ext_80387_constants,
	x86_schedule): Use m_K6_GEODE instead of m_K6.
	(x86_movx, x86_cmove): Set up m_GEODE.
	(x86_integer_DFmode_moves): Clear m_GEODE.
	(processor_target_table): Add entry for geode.
	(processor_alias_table): Ditto.

	* config/i386/geode.md: New file.

	* doc/invoke.texi: Add entry about geode processor.

2006-10-27  Mike Stump  <mrs@apple.com>

	* config/darwin-c.c (darwin_cpp_builtins): Move __STATIC__ and
	__DYNAMIC__ from here back to ...
	* config/darwin.h (CPP_SPEC): ... here.

2006-10-26  Nathan Froyd  <froydnj@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* ggc-common.c (ggc_min_heapsize_heuristic): Be more conservative
	when choosing the minimum heapsize.

2006-10-26  Nathan Froyd <froydnj@codesourcery.com>

	* gcc/unwind-dw2.h: Move cfa-related variables into
	struct frame_state_reg_info to ensure that the CFA is properly
	handled when executing DW_CFA_{remember,restore}_state.
	* gcc/unwind-dw2.c, gcc/config/alpha/linux-unwind.h,
	gcc/config/alpha/vms-unwind.h, gcc/config/s390/tpf-unwind.h
	gcc/config/s390/linux-unwind.h, gcc/config/sparc/linux-unwind.h
	gcc/config/i386/linux-unwind.h, gcc/config/sh/linux-unwind.h
	gcc/config/rs6000/linux-unwind.h,
	gcc/config/rs6000/darwin-fallback.c, gcc/config/pa/linux-unwind.h,
	gcc/config/pa/hpux-unwind.h, gcc/config/mips/linux-unwind.h:
	Modify to use new cfa_* fields.

2006-10-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_init_frame_layout): Check positive
	frame_size.

2006-10-26  Ben Elliston  <bje@au.ibm.com>

	* gimplify.c (get_name): Remove extraneous break.
	(gimplify_omp_for): Initialise ret with GS_OK.

2006-10-25  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/hpux.h: Define _INCLUDE__STDC_A1_SOURCE in C++.
	Add unix98.o to link line.

2006-10-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (fold_builtin_cbrt, fold_builtin_logarithm):
	Calculate compile-time constants using MPFR.
	(fold_builtin_1): Likewise handle BUILT_IN_ERF, BUILT_IN_ERFC,
	BUILT_IN_EXPM1 and BUILT_IN_LOG1P.

2006-10-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib2funcs.S: Use C-style comments.

2006-10-24  Nathan Froyd  <froydnj@codesourcery.com>

	* dwarf2out.c (gen_compile_unit_die): Use IS_ABSOLUTE_PATH.
	(file_table_relative_p): Likewise.
	(dwarf2out_finish): Likewise.
	(file_name_acquire): Use DIR_SEPARATOR and DIR_SEPARATOR_2.

2006-10-25  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (intra_create_variable_infos):
	  Don't recreate nonlocal_all if it already exists.

2006-10-25  Richard Guenther  <rguenther@suse.de>

	PR target/28803
	* optabs.h (enum optab_index): Remove OTI_lrint.
	(enum convert_optab_index): Add COI_lrint.
	(lrint_optab): Adjust.
	(expand_sfix_optab): Declare.
	* optabs.c (expand_sfix_optab): New function.
	(init_optabs): Init lrint_optab as conversion optab.
	* genopinit.c (lrint_optab): Change to a conversion optab.
	* builtins.c (expand_builtin_int_roundingfn_2): Adjust to
	expansion via conversion optab.
	* config/i386/i386.md (*fistdi2_1): Remove
	flag_unsafe_math_optimizations guard.
	(fistdi2, fistdi2_with_temp, *fist<mode>2_1, fist<mode>2,
	fist<mode>2_with_temp): Likewise.
	(lrint<mode>2): Split into...
	(lrintxf<mode>2): ... x87 part
	(lrint<mode>di2, lrint<mode>si2): ... and SSE parts.
	* config/i386/sse.md (sse_cvtss2si_2, sse_cvtss2_siq_2,
	sse2_cvtsd2si_2, sse2_cvtsd2siq_2): New insns for
	UNSPEC_FIX_NOTRUNC matching non-vector float modes.
	* doc/md.texi (lrintMN2): Document.

2006-10-25  Uros Bizjak  <uros@kss-loka.si>

	PR target/28909
	* config/i386/sync.md ("sync_add<mode>", "sync_sub<mode>"):
	Use inc and dec instructions for TARGET_USE_INCDEC.
	("*sync_compare_and_swap<mode>"): Fix -masm=intel template.
	("sync_double_compare_and_swap<mode>"): Likewise.
	("*sync_double_compare_and_swapdi_pic"): Likewise.
	("*sync_compare_and_swap_cc<mode>"): Likewise.
	("sync_double_compare_and_swap_cc<mode>"): Likewise.
	("*sync_double_compare_and_swap_ccdi_pic"): Likewise.
	("sync_old_add<mode>"): Likewise.
	("sync_lock_test_and_set<mode>"): Likewise.
	("sync_lock_test_and_set<mode>"): Likewise.
	("sync_add<mode>"): Likewise.
	("sync_sub<mode>"): Likewise.
	("sync_ior<mode>"): Likewise.
	("sync_and<mode>"): Likewise.
	("sync_xor<mode>"): Likewise.

2006-10-25  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Rename OTI_drem to OTI_remainder.
	(remainder_optab): Define corresponding macro.
	(drem_optab): Remove.
	* optabs.c (init_optabs): Initialize remainder_optab.  Remove
	drem_optab initialization.
	* genopinit.c (optabs): Implement remainder_optab using
	remainder?f3 patterns.  Remove drem_optab.
	* builtins.c (expand_builtin_mathfn_2): Handle
	BUILT_IN_REMAINDER{,F,L} using remainder_optab.
	(expand_builtin): Expand BUILT_IN_REMAINDER{,F,L} using
	expand_builtin_mathfn_2.

	(expand_builtin) [BUILT_IN_FMOD, BUILT_IN_DREM]: Do not
	depend on flag_unsafe_math_optimizations.

	* config/i386/i386.md ("remaindersf3", "remainderdf3")
	("remainderxf3"): Renamed from "drem{s,d,x}f3" expanders.
	Do not depend on flag_unsafe_math_optimizations.  Use
	truncxf?f expander instead of truncxf?f_i387_noop.

	("fpremxf4", "fprem1xf4"): Do not depend on
	flag_unsafe_math_optimizations.
	("fmodsf3", "fmoddf3", "fmodxf3"): Do not depend on
	flag_unsafe_math_optimizations.  Use truncxf?f expander
	instead of truncxf?f_i387_noop.

	* doc/md.texi (fmod, remainder): Document standard named pattern.

2006-10-24  Richard Sandiford  <richard@codesourcery.com>
	    David Daney  <ddaney@avtrex.com>

	PR middle-end/29519
	* rtlanal.c (nonzero_address_p):  Remove check for values wrapping.

2006-10-25  Ben Elliston  <bje@au.ibm.com>

	* doc/extend.texi (Variable Attributes): Typo fix.

2006-10-24  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 54.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Add fpcr register.
	(REG_ALLOC_ORDER): Add one element to allocate fpcr register.
	(FRAME_POINTER_REGNUM): Update register number to 21.
	(REG_CLASS_CONTENTS): Update contents for added fpcr register.
	(HI_REGISTER_NAMES): Add "fpcr" for fpcr register.

	* config/i386/i386.c (regclass_map): Add fpcr entry.
	(dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
	Add fpcr entry.
	(print_reg): Assert REGNO (x) != FPCR_REG.

	* config/i386/i386.md (FPCR_REG, R11_REG): New constants.
	(DIRFLAG_REG): Renumber.
	(x86_fnstcw_1, x86_fldcw_1): Use FPCR_REG instead of FPSR_REG.
	(*sibcall_1_rex64_v, *sibcall_value_1_rex64_v): Use R11_REG.
	(sse_prologue_save, *sse_prologue_save_insn): Renumber
	hardcoded SSE register numbers.

	* config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
	hardcoded MMX register numbers.

2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (fold_builtin_sin, fold_builtin_atan): Remove.
	(do_mpfr_arg1): Add `min', `max' and `inclusive' arguments.
	Update all callers.
	(BUILT_IN_SIN, BUILT_IN_ATAN): Handle in main switch.
	(BUILT_IN_ASIN, BUILT_IN_ACOS, BUILT_IN_ATAN, BUILT_IN_ASINH,
	BUILT_IN_ACOSH, BUILT_IN_ATANH, BUILT_IN_SINH, BUILT_IN_COSH,
	BUILT_IN_TANH): Calculate compile-time arguments using MPFR.

2006-10-24  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28796
	* builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
	and HONOR_NANS instead of MODE_HAS_INFINITIES and MODE_HAS_NANS
	for deciding optimizations in consistency with fold-const.c
	(fold_builtin_unordered_cmp): Likewise.

2006-10-24  Richard Guenther  <rguenther@suse.de>

	* builtins.c (fold_builtin_floor): Fold floor (x) where
	x is nonnegative to trunc (x).
	(fold_builtin_int_roundingfn): Fold lfloor (x) where x is
	nonnegative to FIX_TRUNC_EXPR.

2006-10-24  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/29567
	* tree-vrp.c (register_edge_assert_for_1): Fix wrong logic
	for TRUTH_NOT_EXPR.  Clarify comments.

2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (fold_builtin_exponent): Evaluate constant arguments
	at compile-time using MPFR.  Change parameter VALUE to FUNC,
	update all callers.
	(do_mpfr_arg1): Rename `exact' to `inexact'.  Carefully check
	for overflow and underflow at all times and avoid folding in
	those cases.

2006-10-24  Ben Elliston  <bje@au.ibm.com>

	* reload1.c: Formatting fixes.

2006-10-23  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/14784
	* tree-flow.h (struct var_ann_d): Add is_heapvar bit.
	* tree-ssa-structalias.c (get_constraint_for,
	intra_create_variable_infos): Set is_heapvar.
	* tree-ssa-operands.c (access_can_touch_variable): Do not handle
	non-heapvar pointer variables specially.

2006-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR middle-end/29335
	* builtins.c (fold_builtin_sin, fold_builtin_cos,
	fold_builtin_tan): Fold all constant arguments.  Take a "type"
	argument as necessary.
	(do_mpfr_arg1): New.
	* real.c, real.h (real_from_mpfr, mpfr_from_real): New.

2006-10-23  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm: Use C-style comments.

2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* tree.c (local_define_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
	c_builtin_function.
	* c-tree.h (builtin_function): Rename to c_builtin_function. Change
	the signature.
	* c-decl.c (builtin_function): Rename to c_builtin_function. Move
	common code to add_builtin_function.
	* langhooks.c (add_builtin_function): New function.
	(lhd_builtin_function): New function.
	* langhooks.h (struct lang_hooks): Change the signature of
	builtin_function.
	(add_builtin_function): New function.
	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace
	calls to lang_hooks.builtin_function with add_builtin_function.
	* c-common.c (decl_builtin_1): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/alpha/alpha.c (alpha_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/frv/frv.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/s390/s390.c (s390_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/sparc/sparc.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/i386/i386.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/sh/sh.c (sh_media_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/c4x/c4x.c (c4x_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/stormy16/stormy16.c (xstormy16_init_builtins):
	Replace calls to lang_hooks.builtin_function with
	add_builtin_function.
	* config/iq2000/iq2000.c (def_builtin):
	Replace calls to lang_hooks.builtin_function with
	add_builtin_function.
	* config/ia64/ia64.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/rs6000/rs6000.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	(altivec_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/arm/arm.c (def_mbuiltin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	(arm_init_tls_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/mips/mips.c (mips_init_builtins): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* config/bfin/bfin.c (def_builtin): Replace calls to
	lang_hooks.builtin_function with add_builtin_function.
	* langhooks-def.h (lhd_builtin_function): New function.
	(LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function.

2006-10-23  Jakub Jelinek  <jakub@redhat.com>

	* builtins.c (expand_builtin, maybe_emit_chk_warning): Handle
	BUILT_IN_STRNCAT_CHK.

2006-10-23  Jan Hubicka  <jh@suse.cz>

	* builtins.c (expand_builtin_memmove): Remove ORIG_EXP argument;
	don't do conversion from memmove to memcpy here.
	(expand_builtin_bcopy, expand_builtin): Update call of
	expand_builtin_memmove.
	(fold_builtin_memory_op): Do folding of memmove to memcpy here.

2006-10-23  Paul Brook  <paul@codesourcery.com>

	* stor-layout.c (start_record_layout): maximum_field_alignment
	overrides STRUCTURE_SIZE_BOUNDARY.

2006-10-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/predicates.md ("bras_sym_operand"): Do not accept
	nonlocal function symbols if flag_pic.

2006-10-23  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27132
	PR middle-end/23295
	* builtins.c (fold_binary): Remove checks for flag_wrapv
	and flag_trapv where negate_expr_p covers these cases.

2006-10-23  Richard Guenther  <rguenther@suse.de>

	PR middle-end/29548
	* fold-const.c (fold_plusminus_mult_expr): Check exact power
	of two on the absolute value.
	(fold_binary): Fold x * -C to -x * C if x is easily negatable
	and negating -C does not overflow.

2006-10-23  Richard Guenther  <rguenther@suse.de>

	PR middle-end/21032
	* convert.c (convert_to_real): Fold (float)-x to -(float)x
	only if not flag_rounding_math.

2006-10-22  Richard Sandiford  <richard@codesourcery.com>
	    Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/28232
	* config/sh/sh.c (expand_block_move): Use a BLKmode rather than
	SImode memory reference for the source of a movua.
	* config/sh/sh.md (UNSPEC_MOVUA): New macro.
	(movua): Use an unspec instead of sign_extract.  Expect the source
	to have mode BLKmode.
	(extv, insv): Use a BLKmode rather than SImode memory reference
	for the source of a movua.

2006-10-22  Jeff Law  <law@redhat.com>
	Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/15911
	* tree-vrp.c (extract_code_and_val_from_cond): New function.
	(register_edge_assert_for_1): Likewise.
	(register_edge_assert_for): Handle &&/&/||/| in conditionals.
	(find_conditional_asserts): Adjust for new function signature.
	(find_assert_locations): Likewise.

2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/tmmintrin.h: Remove the duplicated content.

2006-10-22  H.J. Lu  <hongjiu.lu@intel.com>

	* config.gcc (i[34567]86-*-*): Add tmmintrin.h to extra_headers.
	(x86_64-*-*): Likewise.

	* config/i386/i386.c (pta_flags): Add PTA_SSSE3.
	(override_options): Check SSSE3.
	(ix86_builtins): Add IX86_BUILTIN_PHADDW, IX86_BUILTIN_PHADDD,
	IX86_BUILTIN_PHADDSW, IX86_BUILTIN_PHSUBW, IX86_BUILTIN_PHSUBD,
	IX86_BUILTIN_PHSUBSW, IX86_BUILTIN_PMADDUBSW,
	IX86_BUILTIN_PMULHRSW, IX86_BUILTIN_PSHUFB,
	IX86_BUILTIN_PSIGNB, IX86_BUILTIN_PSIGNW, IX86_BUILTIN_PSIGND,
	IX86_BUILTIN_PALIGNR, IX86_BUILTIN_PABSB, IX86_BUILTIN_PABSW,
	IX86_BUILTIN_PABSD, IX86_BUILTIN_PHADDW128,
	IX86_BUILTIN_PHADDD128, IX86_BUILTIN_PHADDSW128,
	IX86_BUILTIN_PHSUBW128, IX86_BUILTIN_PHSUBD128,
	IX86_BUILTIN_PHSUBSW128, IX86_BUILTIN_PMADDUBSW128,
	IX86_BUILTIN_PMULHRSW128, IX86_BUILTIN_PSHUFB128,
	IX86_BUILTIN_PSIGNB128, IX86_BUILTIN_PSIGNW128,
	IX86_BUILTIN_PSIGND128, IX86_BUILTIN_PALIGNR128,
	IX86_BUILTIN_PABSB128, IX86_BUILTIN_PABSW128 and
	IX86_BUILTIN_PABSD128.
	(bdesc_2arg): Add SSSE3.
	(bdesc_1arg): Likewise.
	(ix86_init_mmx_sse_builtins): Support SSSE3.
	(ix86_expand_builtin): Likewise.
	* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Likewise.

	* config/i386/i386.md (UNSPEC_PSHUFB): New.
	(UNSPEC_PSIGN): Likewise.
	(UNSPEC_PALIGNR): Likewise.
	Include mmx.md before sse.md.

	* config/i386/i386.opt: Add -mssse3.

	* config/i386/sse.md (ssse3_phaddwv8hi3): New pattern for SSSE3.
	(ssse3_phaddwv4hi3): Likewise.
	(ssse3_phadddv4si3): Likewise.
	(ssse3_phadddv2si3): Likewise.
	(ssse3_phaddswv8hi3): Likewise.
	(ssse3_phaddswv4hi3): Likewise.
	(ssse3_phsubwv8hi3): Likewise.
	(ssse3_phsubwv4hi3): Likewise.
	(ssse3_phsubdv4si3): Likewise.
	(ssse3_phsubdv2si3): Likewise.
	(ssse3_phsubswv8hi3): Likewise.
	(ssse3_phsubswv4hi3): Likewise.
	(ssse3_pmaddubswv8hi3): Likewise.
	(ssse3_pmaddubswv4hi3): Likewise.
	(ssse3_pmulhrswv8hi3): Likewise.
	(ssse3_pmulhrswv4hi3): Likewise.
	(ssse3_pshufbv16qi3): Likewise.
	(ssse3_pshufbv8qi3): Likewise.
	(ssse3_psign<mode>3): Likewise.
	(ssse3_psign<mode>3): Likewise.
	(ssse3_palignrti): Likewise.
	(ssse3_palignrdi): Likewise.
	(abs<mode>2): Likewise.
	(abs<mode>2): Likewise.

	* config/i386/tmmintrin.h: New file.

	* doc/extend.texi: Document SSSE3 built-in functions.

	* doc/invoke.texi: Document -mssse3/-mno-ssse3 switches.

2006-10-22  Ira Rosen  <irar@il.ibm.com>

	* tree-vect-transform.c (vectorizable_load): Use the type of the
	return value of the mask_for_load builtin to create realign_load
	stmt.

2006-10-22  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (mips_split_const): Don't accept bare PLUS
	expressions.

2006-10-21  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.md (UNSPEC_LDQQU): Renamed to ...
	(UNSPEC_LDDQU): This.
	* config/i386/sse.md (sse3_lddqu): Updated.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_int_roundingfn_2): New function.
	(expand_builtin): Use it to expand lrint instead of
	expand_builtin_mathfn.

2006-10-21  Uros Bizjak  <uros@kss-loka.si>

	PR middle-end/28252
	* builtins.c (fold_builtin): Fold pow(x,1.0/3.0) as cbrt(x) if
	flag_unsafe_math_optimizations is set.

2006-10-21  Uros Bizjak  <uros@kss-loka.si>

	PR target/19398
	* config/i386/i386.md (fix_trunc?f?i_sse): Add peephole2
	patterns to use memory input operand in x87->mem->XMM
	reload sequences.  Skip transformation for TARGET_K8.

2006-10-21  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Do not
	force operand1 to register if both operands are memory operands.
	(*extendsfdf2_mixed, *extendsfdf2_sse, *extendsfdf2_i387)
	(*extendsfxf2_i387, *extenddfxf2_i387): Do not disable pattern
	if both operands are memory operands.
	(truncdfsf2): Do not force operand1 to register if both operands
	are memory operands.

2006-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (LIBS): Add $(GMPLIBS).
	* doc/install.texi: Update GMP and MPFR requirements.
	* doc/sourcebuild.texi (need_gmp): Delete.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/3511
	* tree-ssa-pre.c (phi_translate): Fold CALL_EXPRs that
	got new invariant arguments during PHI translation.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26898
	* fold-const.c (fold_comparison): Fold signed comparisons
	of the form X +- C1 CMP Y +- C2.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	PR target/19116
	* config/i386/i386.c (override_options): Do not set MASK_IEEE_FP
	if flag_unsafe_math_optimizations is specified.  We have
	flag_finite_math_only for that.
	* config/i386/i386.md (sqrtxf2): Do not require TARGET_IEEE_FP
	or flag_unsafe_math_optimizations.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	* builtins.c (fold_builtin_classify): Fix typo.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28796
	* simplify-rtx.c (simplify_const_relational_operation):
	Do not constant-fold ORDERED and UNORDERED for
	flag_unsafe_math_optimizations but only we do not need to
	honor NaNs for the given mode.

2006-10-21  Richard Guenther  <rguenther@suse.de>

	PR target/29512
	* config/i386/i386.c (classify_argument): Remove redundant
	walking of the BINFOs.
	(contains_128bit_aligned_vector_p): Likewise.

2006-10-20  Mark Mitchell  <mark@codesourcery.com>

	* BASE-VER: Set to 4.3.0.

2006-10-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (DECL_PTA_ARTIFICIAL): Remove.
	(tree_decl_with_vis): Remove artificial_pta_var flag.
	* tree-flow.h (referenced_var_check_and_insert): Expose.
	(nonlocal_all): New prototype.
	* tree-ssa-structalias.c (nonlocal_for_type): Remove.
	(nonlocal_all): Make global.
	(nonlocal_lookup): Remove.
	(nonlocal_insert): Ditto.
	(create_nonlocal_var): Do not call nonlocal_insert.
	(get_nonlocal_id_for_type): Remove.
	(find_global_initializers): Mark new vars we find for renaming.
	(intra_create_variable_infos): Only create one nonlocal.
	(expand_nonlocal_solutions): Remove.
	(compute_points_to_sets): Don't call it.
	(ipa_pta_execute): Ditto.
	(init_alias_heapvars): Don't create nonlocal_for_type.
	(delete_alias_heapvars): Don't remove it.
	* tree-ssa-operands.c (access_can_touch_variable): Don't prune
	nonlocal_all.

2006-10-19  Brooks Moses  <bmoses@stanford.edu>

	* doc/install.texi (Downloading GCC): Clarify mention of
	Fortran in the "full distribution" description.

2006-10-19  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/28778
	Fix PR tree-optimization/29156
	Fix PR tree-optimization/29415
	* tree.h (DECL_PTA_ARTIFICIAL): New macro.
	(tree_decl_with_vis): Add artificial_pta_var flag.
	* tree-ssa-alias.c (is_escape_site): Remove alias info argument,
	pushed into callers.
	* tree-ssa-structalias.c (nonlocal_for_type): New variable.
	(nonlocal_all): Ditto.
	(struct variable_info): Add directly_dereferenced member.
	(var_escaped_vars): New variable.
	(escaped_vars_tree): Ditto.
	(escaped_vars_id): Ditto.
	(nonlocal_vars_id): Ditto.
	(new_var_info): Set directly_dereferenced.
	(graph_size): New variable
	(build_constraint_graph): Use graph_size.
	(solve_graph): Don't process constraints that cannot change the
	solution, don't try to propagate an empty solution to our
	successors.
	(process_constraint): Set directly_dereferenced.
	(could_have_pointers): New function.
	(get_constraint_for_component_ref): Don't process STRING_CST.
	(nonlocal_lookup): New function.
	(nonlocal_insert): Ditto.
	(create_nonlocal_var): Ditto.
	(get_nonlocal_id_for_type): Ditto.
	(get_constraint_for): Allow results vector to be empty in the case
	of string constants.
	Handle results of calls properly.
	(update_alias_info): Update alias info stats on number and type of
	calls.
	(find_func_aliases): Use could_have_pointers.
	(make_constraint_from_escaped): Renamed from
	make_constraint_to_anything, and changed to make constraints from
	escape variable.
	(make_constraint_to_escaped): New function.
	(find_global_initializers): Ditto.
	(create_variable_info_for): Make constraint from escaped to any
	global variable, and from any global variable to the set of
	escaped vars.
	(intra_create_variable_infos): Deal with escaped instead of
	pointing to anything.
	(set_uids_in_ptset): Do type pruning on directly dereferenced
	variables.
	(find_what_p_points_to): Adjust call to set_uids_with_ptset.
	(init_base_vars): Fix comment, and initialize escaped_vars.
	(need_to_solve): Removed.
	(find_escape_constraints): New function.
	(expand_nonlocal_solutions): Ditto.
	(compute_points_to_sets): Call find_escape_constraints and
	expand_nonlocal_solutions.
	(delete_points_to_sets): Don't fall off the end of the graph.
	(init_alias_heapvars): Initialize nonlocal_for_type and
	nonlocal_all.
	(delete_alias_heapvars): Free nonlocal_for_type and null out
	nonlocal_all.

2006-10-19  Eric Botcazou  <ebotcazou@adacore.com>

	* fold-const.c (add_double): Rename to add_double_with_sign.
	Add 'unsigned_p' parameter and take it into account for the overflow.
	(mul_double): Rename to mul_double_with_sign.
	Add 'unsigned_p' parameter and take it into account for the overflow.
	(fold_div_compare): Call add_double_with_sign instead of add_double
	and mul_double_with_sign instead of mul_double, passing them the
	unsignedness of the type.
	* tree.h (add_double): Macroize.
	(add_double_with_sign): New prototype.
	(mul_double): Macroize.
	(mul_double_with_sign): New prototype.

2006-10-19  Chen Liqin  <liqin@sunnorth.com.cn>

	* config/score/crti.asm: New file.
	* config/score/crtn.asm: New file.
	* config/score/elf.h: New file.
	* config/score/mac.md: New file.
	* config/score/misc.md: New file.
	* config/score/mul-div.S: New file.
	* config/score/predicates.md: New file.
	* config/score/score7.md: New file.
	* config/score/score.c: New file.
	* config/score/score-conv.h: New file.
	* config/score/score.h: New file.
	* config/score/score.md: New file.
	* config/score/score-mdaux.c: New file.
	* config/score/score-mdaux.h: New file.
	* config/score/score-modes.def: New file.
	* config/score/score.opt: New file.
	* config/score/score-protos.h: New file.
	* config/score/score-version.h: New file.
	* config/score/t-score-elf: New file.
	* config.gcc: Add score*-*-* configurations(Update before).
	* doc/invoke.texi (Score Options): New section.
	* doc/md.texi (Score family): New section to document constraints.

2006-10-19  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c: Fix spelling typo.

2006-10-18  Tom Tromey  <tromey@redhat.com>

	* doc/install.texi (Prerequisites): Mention automake 1.9.6.

2006-10-18  Jan Hubicka  <jh@suse.cz>

	PR middle-end/29299
	* cfgexpand.c (expand_used_vars_for_block): Vars marked used by user
	are used.

2006-10-18  Marcin Dalecki  <martin@dalecki.de>

	* omp-low.c (expand_parallel_call): Use BSI_SAME_STMT instead of
	TSI_SAME_STMT, since that's the desired entity.

2006-10-17  Wolfgang Gellerich  <gellerich@de.ibm.com>

	* config/s390/contraints.md: New file.
	* config/s390/s390-protos.h (s390_mem_constraint,
	s390_O_constraint_str, s390_N_constraint_str,
	s390_float_const_zero_p): Function prototypes added.
	* config/s390/s390.c (s390_extra_constraint_str,
	s390_const_double_ok_for_constraint_p,
	s390_const_ok_for_constraint_p): Functions removed.
	(s390_mem_constraint, s390_O_constraint_str, s390_N_constraint_str,
	s390_float_const_zero_p): New functions.
	* config/s390/s390.h (REG_CLASS_FROM_LETTER, CONST_OK_FOR_CONSTRAINT_P,
	CONST_DOUBLE_OK_FOR_CONSTRAINT_P, EXTRA_CONSTRAINT_STR,
	EXTRA_MEMORY_CONSTRAINT, EXTRA_ADDRESS_CONSTRAINT, CONSTRAINT_LEN):
	Macro definitions removed.
	(s390_const_ok_for_constraint_p, s390_const_double_ok_for_constraint_p,
	s390_extra_constraint_str): Functions removed.

2006-10-17  Andrew Pinsiki  <pinskia@gmail.com>
	    Richard Sandiford  <richard@codesourcery.com>

	PR target/29413
	* config/mips/linux.h (SUBTARGET_CC1_SPEC): Override.
	* config/mips/mips.h (CC1_SPEC): Override any earlier definition.

2006-10-16  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/sysv4.h (DBX_REGISTER_NUMBER): Move to rs6000.h.
	(DWARF2_FRAME_REG_OUT): Likewise.
	* config/rs6000/rs6000.h (DBX_REGISTER_NUMBER): Move from sysv4.h.
	(DWARF2_FRAME_REG_OUT): Likewise.

2006-10-17  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_rtx_costs_1): Handle multiply-accumulate.

2006-10-16  Brooks Moses  <bmoses@stanford.edu>

	* doc/contrib.texi, doc/install.texi, doc/standards.texi:
	Standardize on "GNU Fortran" as the official name of the Fortran
	compiler.

2006-10-16  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (Darwin Options): Document -mkernel.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Add
	-mkernel support.
	(C_COMMON_OVERRIDE_OPTIONS): Add -mkernel support.  Add
	SUBTARGET_C_COMMON_OVERRIDE_OPTIONS callout.
	(CC1_SPEC): Don't turn on -fPIC when -mkernel is given.
	(OS_MISSING_ALTIVEC): Add.
	* config/i386/i386.c (override_options): Add
	SUBSUBTARGET_OVERRIDE_OPTIONS callout.
	* config/i386/darwin.h (CC1_SPEC): Don't turn on -fPIC when
	-mkernel, -static or -mdynamic-no-pic is given.
	(C_COMMON_OVERRIDE_OPTIONS): Add.
	* config/darwin.opt (fapple-kext): Add.
	(mkernel): Add.
	* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add
	-fapple-kext, -findirect-virtual-calls, -fterminated-vtables and
	-mkernel support.
	(SUBSUBTARGET_OVERRIDE_OPTIONS): Add.
	(SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Add.
	(CPP_SPEC): Move defines for __DYNAMIC__ and __STATIC__ from here...
	(SUBTARGET_ATTRIBUTE_TABLE): Add apple_kext_compatibility.
	(TARGET_CXX_CDTOR_RETURNS_THIS): Add.
	(flag_mkernel): Add.
	(flag_apple_kext): Add.
	(TARGET_KEXTABI): Add.
	* config/darwin.c (darwin_handle_kext_attribute): Add.
	(DARWIN_VTABLE_P): Add.
	(darwin_binds_local_p): Add partial support for rebinding vtables
	in kexts.
	(darwin_kextabi_p): Add.
	(darwin_override_options): Add.
	* config/darwin-protos.h (darwin_handle_kext_attribute): Add.
	(darwin_kextabi_p): Add.
	(darwin_override_options): Add.
	* config/darwin-c.c (darwin_cpp_builtins): ... move defines for
	__DYNAMIC__ and __STATIC__ here.

2006-10-16  Brooks Moses  <bmoses@stanford.edu>

	* doc/sourcebuild.texi, doc/makefile.texi, doc/install.texi:
	Added mention of "make pdf" target, and Texinfo requirements for
	same.

2006-10-16  DJ Delorie  <dj@redhat.com>

	* config/s390/s390.c (s390_decompose_address): Allow symbol+offset
	into the GOT in case we need a subreg of the address.

2006-10-16  Richard Guenther  <rguenther@suse.de>

	PR target/25519
	* doc/extend.texi (X86 Built-in Functions): Fix typos in
	SSE builtin documentation.  Document SSE2 builtins.

2006-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa64-hpux.h (LINK_SPEC): Force __cxa_finalize to be an undefined
	symbol in the output file for non-shared links when -nostdlib or
	-nodefaultlibs isn't specified.

	* config.gcc (hppa*64*-*-hpux11*, hppa[12]*-*-hpux11*): Default to
	posix thread support.

2006-10-15  Jan Hubicka  <jh@suse.cz>

	PR middle-end/29241
	* cgraphunit.c (cgraph_preserve_function_body_p): Preserve functions
	declared always_inline even when not inlining.

2006-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	    Andrew Pinski  <pinskia@gmail.com>

	PR middle-end/29111
	* builtins.c (get_pointer_alignment): Return 0 if TER is not run.

2006-10-15  Jan Hubicka  <jh@suse.cz>
	    Richard Guenther  <rguenther@suse.de>

	PR middle-end/29299
	* cgraphunit.c (cgraph_finalize_compilation_unit): Call
	process_function_and_variable_attributes on all variables, including
	those discovered during cgraph construction phase.

2006-10-15  Bernhard Fischer  <aldot@gcc.gnu.org>

	* final.c: Update Copyright year. Commentary typo fix. Fix whitespace

2006-10-14  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/athlon.md (athlon_fist): Add fisttp.

2006-10-13  David Edelsohn  <edelsohn@gnu.org>
	    Ian Lance Taylor  <ian@airs.com>

	PR middle-end/29250
	* expr.c (expand_expr_real_1) <NON_LVALUE_EXPR, NOP_EXPR,
	CONVERT_EXPR>: Change EXPAND_SUM modifier to EXPAND_NORMAL when
	recursing.

2006-10-14  Kazu Hirata  <kazu@codesourcery.com>

	* config/score/score.c, config/score/score.h: Fix comment
	typos.

2006-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR bootstrap/29402
	* Makefile.in (ALL_GTFILES_H): Use $(sort ...) instead of
	shell pipeline.

2006-10-13  Eric Christopher  <echristo@apple.com>

	* config/darwin.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2006-10-13  Carlos O'Donell  <carlos@codesourcery.com>

	Revert this change:
	2006-10-13  Carlos O'Donell  <carlos@codesourcery.com>
	* config/elfos.h (MAX_OFILE_ALIGNMENT): Default to largest
	alignment supported by 32-bit ELF.

2006-10-13  Eric Christopher  <echristo@apple.com>

	* config/darwin.c (darwin_emit_unwind_label): Strip
	name encoding. Use DECL_ASSEMBLER_NAME_SET_P.

2006-10-13  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/29446
	* tree-vrp.c (fix_equivalence_set): Remove.
	(extract_range_from_assert): Do not call fix_equivalence_set.
	(debug_value_range): Print a newline.
	(compare_name_with_value): For equivalence sets with
	inconsistent value ranges conservatively bail out.
	(compare_names): Likewise.

2006-10-13  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Add comment about 32-bit GMP
	and MPFR for gfortran.

2006-10-13  Carlos O'Donell  <carlos@codesourcery.com>

	* config/elfos.h (MAX_OFILE_ALIGNMENT): Default to largest
	alignment supported by 32-bit ELF.

2006-10-13  Paolo Bonzini  <bonzini@gnu.org>

	PR c/29092

	* c-typeck.c (digest_init): Always allow initializing vectors
	that have static storage duration with compound literals.
	* tree.c (build_type_attribute_qual_variant): New, based on
	build_type_attribute_variant.
	(build_type_attribute_variant): Rewrite using the former.
	(make_vector_type): Use build_type_attribute_qual_variant to build
	type variants.  Use type_hash_canon on the others.

2006-10-13  Daniel Berlin <dberlin@dberlin.org>
	    Ramana Radhakrishnan  <ramana.radhakrishnan@celunite.com>

	* tree-flow-inline.h (zero_ssa_operands): Fix comment.

2006-10-12  Jan Hubicka  <jh@suse.cz>

	PR c/28419
	* c-decl.c (c_make_fname_decl): Do not segfault in case where
	current_function_decl is set but current_function_scope is not.

2006-10-12  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.md (eh_return): Call emit_jump_insn instead of
	emit_insn to emit eh_return_internal instruction.
	(eh_return_internal): Explicitly set pc.

2006-10-11  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28230
	* tree-vrp.c (vrp_int_const_binop): Move flag_wrapv handling
	to the correct place.

2006-10-11  Richard Guenther  <rguenther@suse.de>

	PR inline-asm/29119
	* gimplify.c (gimplify_asm_expr): Mark the gimplified lvalue
	addressable.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* configure.ac: Added pdf to "Make-hooks"
	* Makefile.in: Added TEXI2PDF definition, and various pdf-file
	targets and *.pdf file patterns in cleanup targets.
	* configure: Regenerated.

2006-10-10  Anatoly Sokolov <aesok@post.ru>

	* config/avr/predicates.md: New file.
	* config/avr/avr.md: Include it.
	(REG_SP): New constant.
	(peepholes): Use predicates.
	(sbrx_branch, sbrx_and_branchhi, sbrx_and_branchsi, branch, rvbranch,
	difficult_branch,  difficult_rvbranch, cbi, sbi, sbix_branch,
	sbix_branch_bit7, sbix_branch_tmp, sbix_branch_tmp_bit7): Ditto.

2006-10-10  Adam Nemet  <anemet@caviumnetworks.com>

	* config/mips/mips.c (mips_save_restore_reg): Use gen_frame_mem to
	avoid alias set 0.

2006-10-10  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/29272
	* builtins.c (var_decl_component_p): New function.
	(fold_builtin_memset, fold_builtin_memory_op): Restrict
	single entry optimization to variables and components thereof.

2006-10-10  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/29323
	* except.c (set_nothrow_function_flags): For functions
	that do not bind local bail out early.

2006-10-10  Ben Elliston  <bje@au.ibm.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Add -m to the
	-mdlmzb option.

2006-10-09  Richard Henderson  <rth@redhat.com>

	Revert emutls patch.

2006-10-09  Richard Guenther  <rguenther@suse.de>

	PR middle-end/29254
	* cgraphunit.c (verify_cgraph_node): Bail out on earlier
	errors.

2006-10-09  Steve Ellcey  <sje@cup.hp.com>

	PR target/27880
	* unwind-c.c (PERSONALITY_FUNCTION): Ifdef use of _Unwind_GetIPInfo.
	* configure.ac (HAVE_GETIPINFO): Check for _Unwind_GetIPInfo.
	* configure: Regenerate.
	* config.in: Regenerate.

2006-10-09  Aldy Hernandez  <aldyh@redhat.com>

	* tree-mudflap.c (mf_xform_derefs_1): Add parentheses around TREE_TYPE.

2006-10-08  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (mips_legitimize_tls_address): Implement
	all TLS models in the same way as local exec if !TARGET_ABICALLS.
	Remove stray newline.

2006-10-08  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (mips_classify_symbol): Do not return
	SYMBOL_SMALL_DATA if SYMBOL_REF_WEAK.
	(mips_in_small_data_p): Tweak comments.

2006-10-08  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/elf.h (HANDLE_PRAGMA_PUSH_POP): Define.

2006-10-07  Kazu Hirata  <kazu@codesourcery.com>

	* gimplify.c, sched-int.h: Fix comment typos.

	* sched-int.h: Fix comment typos.

2006-10-06  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* sched-int.h (IS_SPECULATION_CHECK_P, IS_SPECULATION_SIMPLE_CHECK_P):
	New macros.
	* sched-ebb.c (begin_schedule_ready): Use them.
	* haifa-sched.c (schedule_insn, move_insn, try_ready,
	add_to_speculative_block, create_check_block_twin, speculate_insn,
	fix_jump_move, move_block_after_check): Ditto.
	* sched-rgn.c (new_ready): Ditto.

2006-10-06  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR rtl-optimization/29128
	* sched-int.h (IS_SPECULATION_BRANCHY_CHECK_P): New macro.
	* sched-ebb.c (advance_target_bb): Use it to fix condition to
	allow interblock movement of speculation checks.

2006-10-06  Zdenek Dvorak <dvorakz@suse.cz>

	PR middle-end/29256
	* tree-ssa-loop-ivopts.c (determine_base_object): Handle pointers
	casted to integer type.
	(get_address_cost): Decrease cost of [symbol + index] addressing modes
	if they are significantly more expensive than [reg + index] ones.

2006-10-06  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/29330
	* tree-data-ref.c (free_data_ref): Use DR_FREE_ACCESS_FNS macro.
	(initialize_data_dependence_relation): Clear DDR_LOOP_NEST pointer
	on newly allocated ddrs.
	(find_loop_nest_1, find_loop_nest): Change LOOP_NEST to a pointer
	to VEC (loop_p, heap) pointer.
	(compute_data_dependences_for_loop): Adjust caller.
	(free_dependence_relations): Free DDR_LOOP_NEST.

	* tree-loop-linear.c (linear_transform_loops): Don't forget to
	free DEPENDENCE_RELATIONS and DATAREFS.

	PR target/28924
	* builtins.c (expand_builtin_sync_operation,
	expand_builtin_compare_and_swap, expand_builtin_lock_test_and_set):
	Use convert_to_mode to handle promoted arguments.

2006-10-06  J"orn Rennecke  <joern.rennecke@st.com>

	* print-tree.c (print_node_brief, print_node): Print sign of Inf.

2006-10-06  J"orn Rennecke  <joern.rennecke@st.com>

	* config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Define.

2006-10-05  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/sync.md ("sync_add<mode>", "sync_sub<mode>",
	"sync_ior<mode>", "sync_and<mode>", "sync_xor<mode>"):
	Use <modeconstraint> instead of "r" as operand 1 constraint.

2006-10-06  Olivier Hainque  <hainque@adacore.com>

	* gimplify.c (gimplify_type_sizes) [POINTER_TYPE, REFERENCE_TYPE]:
	Don't recurse on the pointed-to type.
	* c-decl.c (grokdeclarator) [cdk_pointer]: If we are in a NORMAL or
	DECL context, attach an artificial TYPE_DECL to anonymous pointed-to
	types with components of variable size.

2006-10-06  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/mingw32.h (GOMP_SELF_SPECS): Add -mthreads for openmp.

2006-10-06  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/29290
	* tree-loop-linear.c (linear_transform_loops): Bail if loop_nest has
	multiple exits.

	PR target/29198
	* config/i386/i386.c (legitimize_pic_address): Reject TLS symbols.
	* config/i386/predicates.md (local_symbolic_operand): Likewise.

	PR c/29091
	* varasm.c (output_constant): If TREE_VECTOR_CST_ELTS chain is shorter than
	the number of vector elements fill the rest with zeros.

2006-10-05  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (mips_pass_by_reference): Do not return false
	for EABI if type is NULL.  Use a size check based on GET_MODE_SIZE
	instead.

2006-10-05  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.md (subsi3): Lose expander, change previously
	unnamed pattern into subsi3.  Use correct constraints/predicates.
	* config/bfin/bfin.h (CONST_OK_FOR_K): Handle "KN7".
	* config/bfin/predicates.md (reg_or_neg7bit_operand_p): New.

2006-10-05  Ira Rosen  <irar@il.ibm.com>

	* doc/loop.texi: Add data references analysis description.

2006-10-04  Brooks Moses  <bmoses@stanford.edu>

	* doc/gcov.texi: Add formatting to "Invoking gcov" section head.

2006-10-04  Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in (libgcc.mk, LIBGCC_DEPS): Add emutls.c.
	* builtin-types.def (BT_WORD): Make unsigned.
	(BT_FN_VOID_PTR_WORD_WORD_PTR): New.
	* builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
	(BUILT_IN_EMUTLS_REGISTER_COMMON): New.
	* c-decl.c (grokdeclarator): Don't error if !have_tls.
	* c-parser.c (c_parser_omp_threadprivate): Likewise.
	* cgraph.c (decide_is_variable_needed): Look at force_output.
	Recurse for emulated tls.
	* cgraphunit.c (cgraph_varpool_remove_unreferenced_decls): Remove
	checks redundant with decide_is_variable_needed.
	(cgraph_build_static_cdtor): Do cgraph_varpool_assemble_pending_decls.
	* dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
	emulated tls.
	* expr.c (emutls_var_address): New.
	(expand_expr_real_1): Expand emulated tls.
	(expand_expr_addr_expr_1): Likewise.
	* libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
	* output.h (emutls_finish): Declare.
	* toplev.c (compile_file): Call it.
	* tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
	address before wrapping in CONST.
	* varasm.c (emutls_htab, emutls_object_type): New.
	(EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
	(get_emutls_object_name, get_emutls_object_type): New.
	(get_emutls_init_templ_addr, emutls_decl): New.
	(emutls_common_1, emutls_finish): New.
	(assemble_variable): When emulating tls, swap decls; generate
	constructor for the emutls objects.
	(do_assemble_alias): When emulating tls, swap decl and target name.
	(default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
	for emulated tls.
	* emutls.c: New file.
	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
	tls_object for real tls.

2006-10-04  Zack Weinberg  <zackw@panix.com>

	Fix bug in constraint-check generator, reported by Rask Ingemann
	Lambertsen:
	* genpreds.c (add_constraint): Don't remove anything from the
	expression here.
	(write_tm_constrs_h): Detect whether "op" argument is used, and
	mark it ARG_UNUSED if it isn't.
	(write_insn_const_int_ok_for_constraint): Skip the part of the
	expression that would test whether "op" (which is not available
	here) is a CONST_INT.

2006-10-04  Ryan Mansfield  <rmansfield@qnx.com>

	PR c++/28448
	* doc/invoke.texi (fdiagnostics-show-option): Fix typos.

2006-10-03  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin-libgcc.10.5.ver: Update to symbol list for
	current Leopard versions.
	* config/rs6000/darwin-libgcc.10.5.ver: Likewise.

2006-10-03  Kazu Hirata  <kazu@codesourcery.com>

	* doc/install.texi: Fix typos.

2006-10-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* builtins.c (expand_builtin_return_addr): Deal with FRAME_ADDR_RTX.
	* doc/tm.texi (Basic Stack Layout): Document FRAME_ADDR_RTX.
	* config/sparc/sparc.h (FRAME_ADDR_RTX): Define.

2006-10-02  Jack Howarth  <howarth@bromo.med.uc.edu>

	* unwind-dw2-fde-darwin.c (getsectdatafromheader_64): Fix first
	arg to be struct mach_header_64* instead.

2006-10-02  Jakub Jelinek  <jakub@redhat.com>

	PR c/29154
	* gimplify.c (gimplify_self_mod_expr): Run inner expression's post
	side effects after the outer expression's post side effects.

2006-10-01  Sandra Loosemore  <sandra@codesourcery.com>

	* tree.h (DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET):  Fix
	comments to reflect actual behavior and relationship between
	DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET, and DECL_OFFSET_ALIGN.

	* doc/c-tree.texi (Working with declarations): Fix documentation
	of FIELD_DECL likewise.

2006-10-01  Ryan Mansfield  <rmansfield@qnx.com>

	PR c/20533
	* doc/extend.texi: Add used variable attribute description.

2006-09-30  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/24010
	* c.opt (Woverride-init): New.
	* c-opts.c (c_common_post_options): Default warn_override_init to
	extra_warnings.
	* c-typeck.c (add_pending_init, output_init_element): Warn for
	overriding initializers without side effects.
	* doc/invoke.texi (-Woverride-init): Document.
	(-Wextra): Update.

2006-09-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/28096
	* ifcvt.c (check_cond_move_block): Return FALSE if the source of an
	assignment has already been used as a destination earlier in the block.

2006-09-29  Eric Botcazou  <ebotcazou@adacore.com>

	* builtins.c (expand_builtin_setjmp): Delete.
	(expand_builtin) <BUILT_IN_SETJMP>: Mark as unreachable.
	<BUILT_IN_SETJMP_SETUP>: New case.
	<BUILT_IN_SETJMP_DISPATCHER>: Likewise.
	<BUILT_IN_SETJMP_RECEIVER>: Likewise.
	* builtins.def (BUILT_IN_SETJMP_SETUP): New built-in stub.
	(BUILT_IN_SETJMP_DISPATCHER): Likewise.
	(BUILT_IN_SETJMP_RECEIVER): Likewise.
	* gimple-low.c (struct lower_data): New field calls_builtin_setjmp.
	(lower_function_body): Initialize it to false.  If it is set to true
	at the end of the processing, emit the setjmp dispatcher.
	(lower_stmt) <CALL_EXPR>: Invoke lower_builtin_setjmp if the callee
	is __builtin_setjmp and set calls_builtin_setjmp to true as well.
	<MODIFY_EXPR>: Fall through to above case if there is a CALL_EXPR
	on the rhs of the assignment.
	(lower_builtin_setjmp): New function.
	* tree.c (build_common_builtin_nodes): Build BUILT_IN_SETJMP_SETUP,
	BUILT_IN_SETJMP_DISPATCHER and BUILT_IN_SETJMP_RECEIVER nodes.
	* tree-cfg.c (make_exit_edges) <CALL_EXPR>: Use specific predicate
	to detect calls that can go to non-local labels.  Use specific
	helper to create the abnormal edges associated with them.
	<MODIFY_EXPR>: Likewise.
	(make_abnormal_goto_edges): New function extracted from...
	(make_goto_expr_edges): ...here.  Call it for computed gotos.
	(simple_goto_p): Minor tweak.
	(tree_can_make_abnormal_goto): New predicate.
	(tree_redirect_edge_and_branch): Return zero on all abnormal edges.
	(tree_purge_dead_abnormal_call_edges): New function.
	* tree-flow.h (tree_can_make_abnormal_goto): Declare.
	(tree_purge_dead_abnormal_call_edges): Likewise.
	(make_abnormal_goto_edges): Likewise.
	* tree-inline.c (expand_call_inline): Simplify statement frobbing.
	Purge all dead abnormal edges if the call was in the last statement.
	* tree-optimize.c (has_abnormal_outgoing_edge_p): New predicate.
	(execute_fixup_cfg): If there are non-local labels in the function,
	scan the basic blocks and split them at calls that can go to non-local
	labels or add missing abnormal call edges.  Write down the CFG in the
	dump file.
	(pass_fixup_cfg): Remove TODO_dump_func flag.
	* unwind-sjlj.c: Poison setjmp.
	* doc/install.texi (enable-sjlj-exceptions): Use more general wording.
	* doc/tm.texi (DWARF2_UNWIND_INFO): Likewise.
	(TARGET_UNWIND_TABLES_DEFAULT): Fix typo.
	(DONT_USE_BUILTIN_SETJMP): Document it.

2006-09-28  Geoffrey Keating  <geoffk@apple.com>

	PR target/28617
	* config/rs6000/rs6000.h [IN_LIBGCC2] (TARGET_POWERPC64): Define
	to 1 when __ppc64__ is defined.
	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Add ppc64-fp.c and
	darwin-64.c.
	* config/rs6000/ppc64-fp.c: Also compile when __ppc64__ is defined.

2006-09-28  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/t-hpux (LIB2FUNCS_EXTRA): Remove unwind-hpux.c.
	* config/ia64/unwind-hpux.c: Delete.

2006-09-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gimplify.c (gimplify_init_ctor_preeval): Call maybe_with_size_expr
	on the element before gimplifying it, instead of punting if it is of
	variable size.

2006-09-28  Zdenek Dvorak <dvorakz@suse.cz>

	* doc/loop.texi: New file.
	* doc/gccint.texi: Reference loop.texi.
	* Makefile.in (loop.texi): Add.

2006-09-27  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (ENABLE_EXECUTE_STACK): New, use getpagesize not
	__sysctl.
	* config/rs6000/darwin.h (ENABLE_EXECUTE_STACK): Remove.
	* config/i386/darwin.h (ENABLE_EXECUTE_STACK): Remove.

2006-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (divsi_inv_m0): Remove unused variable.

2006-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	* doc/install.texi: Document required versions of GMP and MPFR.

2006-09-27  Paul Brook  <paul@codesourcery.com>

	PR target/29230
	* config/arm/arm.md (arith_adjacentmem): Handle large offsets.

2006-09-27  Richard Sandiford  <richard@codesourcery.com>

	* reload1.c (alter_reg): Require the alignment of the stack slot to
	be at least reg_max_ref_width bytes.
	(scan_paradoxical_subregs): Record the largest width in
	reg_max_ref_width.

2006-09-26  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/25261
	PR middle-end/28790
	* tree-nested.c (struct nesting_info): Added static_chain_added.
	(convert_call_expr): Set static_chain_added when adding static
	chain.  Handle OMP_PARALLEL and OMP_SECTION.

2006-09-25  Matthias Klose  <doko@debian.org>

	* doc/invoke.texi: Add missing full stop.

2006-09-25  Richard Henderson  <rth@redhat.com>

	* cgraph.c (dump_cgraph_varpool_node): Don't crash if called
	before cgraph_function_flags_ready.

2006-09-24  Zdenek Dvorak <dvorakz@suse.cz>
	    Adam Nemet  <anemet@caviumnetworks.com>

	* tree-ssa-loop-ivopts.c (aff_combination_convert,
	determine_common_wider_type): New functions.
	(get_computation_aff): Use them to simplify arithmetic between
	UBASE and CBASE if they are shortened from the same type.

2006-09-24  Kazu Hirata  <kazu@codesourcery.com>

	PR target/28911
	* config/m68k/m68k.md (negsf2, negdf2, negxf2): Use
	-2147483647 - 1 instead of 0x80000000.

2006-09-23  Revital1 Eres  <ERES@il.ibm.com>

	* flags.h (HONOR_NANS): Fix typo in comment.

2006-09-23  Uros Bizjak <uros@kss-loka.si>

	* config/i386/driver-i386.c (host_detect_local_cpu): Add prototype.

2006-09-23  Jakub Jelinek  <jakub@redhat.com>

	PR c/28706
	PR c/28712
	* tree.c (merge_attributes, attribute_list_contained): If both
	TREE_VALUEs are TREE_LISTs, use simple_cst_list_equal instead of
	simple_cst_equal.
	* c-typeck.c (comptypes_internal): Don't consider aggregates
	in different TUs as compatible if there one set of attributes is
	not a subset of the other type's attributes.
	(composite_type): Try harder not to create a new aggregate type.

2006-09-22  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/driver-i386.c: Always define host_detect_local_cpu.
	* config/i386/i386.h: Define EXTRA_SPEC_FUNCTIONS on any i386
	or x86_64 host.  Define HAVE_LOCAL_CPU_DETECT.
	(CC1_CPU_SPEC): Make conditional on HAVE_LOCAL_CPU_DETECT rather
	than replicating condition above.
	* config.host (i[34567]86-*-*): Always use driver-i386.o.

	* config/darwin.h (LINK_SYSROOT_SPEC): New.
	(LINK_SPEC): If TARGET_SYSTEM_ROOT is defined, pass it to
	the linker by default.

2006-09-22  Mike Stump  <mrs@apple.com>

	* config/rs6000/darwin.h (PROFILE_HOOK): Reassociate comment with
	code.

2006-09-22  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28964
	* cfgexpand.c (stack_var_size_cmp): Use DECL_UID to make
	sort of stack variables stable.

2006-09-22  Peter Bergner <bergner@vnet.ibm.com>

	PR middle-end/28690
	* explow.c (force_reg): Set REG_POINTER flag according to
	MEM_POINTER flag.

2006-09-22  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/28888
	* tree-if-conv.c (combine_blocks): Rewritten.
	* tree-cfg.c (tree_verify_flow_info): Check that edges with
	EDGE_TRUE/FALSE_VALUE follow COND_EXPR.

2006-09-22  Jakub Jelinek  <jakub@redhat.com>

	* tree-ssa-propagate.c (set_rhs): Copy EXPR_LOCATION if
	needed.

2006-09-21  Richard Sandiford  <richard@codesourcery.com>

	* varasm.c (copy_constant): Fix reversed gcc_assert check.

2006-09-21  Janis Johnson  <janis187@us.ibm.com>

	* ginclude/decfloat.h (DEC*_DEN): Define using the correct builtins.

2006-09-21  Roger Sayle  <roger@eyesopen.com>

	PR debug/29132
	* dwarf2out.c (dwarf2out_begin_prologue): Initialise the current label,
	dw_fde_current_label, to be the start of the function, i.e. the same
	value as dw_fde_begin.

2006-09-20  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c (CODE_FOR_mips_abs_ps): Delete.
	* config/mips/mips.md (UNSPEC_ABS_PS): New constant.
	(UNSPEC_RSQRT1, UNSPEC_RSQRT2, UNSPEC_RECIP1, UNSPEC_RECIP2)
	(UNSPEC_SINGLE_CC, UNSPEC_SCC): Bump values by 1.
	(*nmadd<mode>, *nmadd<mode>_fastmath): Require !HONOR_NANS.
	(*nmsub<mode>, *nmsub<mode>_fastmath): Likewise.
	(abs<mode>2, neg<mode>2): Likewise.
	* config/mips/mips-ps-3d.md (mips_abs_ps): New define_expand.
	(*mips_abs_ps): New define_insn.

2006-09-20  Josh Conner  <jconner@apple.com>

	PR middle-end/25505
	* calls.c (expand_call): Allow reuse of structure return stack
	temp.

2006-09-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/unwind-arm.c (selfrel_offset31): Clear top bit for
	positive offsets.

2006-09-20  Janis Johnson  <janis187@us.ibm.com>

	* doc/extend.texi (Decimal Float): Update for latest draft TR,
	clean up terminology.

2006-09-20  Steve Ellcey  <sje@cup.hp.com>

	PR target/28574
	* ifcvt.c (dead_or_predicable): Don't predicate then blocks
	with tablejumps in them.

2006-09-20  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/28046
	* c-omp.c (c_finish_omp_atomic): If ADDR is not simple enough,
	wrap it into TARGET_EXPR.

2006-09-20  Eric Christopher  <echristo@apple.com>

	* config/i386/i386.c (x86_fisttp): Remove.
	* config/i386/i386.h (x86_fisttp): Ditto.
	(TARGET_FISTTP): Ditto.

2006-09-19  Eric Christopher  <echristo@apple.com>

	* doc/tm.texi (OBJC_JBLEN): Describe.
	* config/i386/darwin.h (OBJC_JBLEN): Define.
	* config/rs6000/darwin.h: Ditto.

2006-09-19  Steven Bosscher  <steven@gcc.gnu.org>

	PR rtl-optimization/21299
	* reload1.c (reload): Purge invalid ASMs in the final pass.

2006-09-19  Steve Ellcey  <sje@cup.hp.com>

	PR  28490
	* config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function
	pointers as legitimate constants.

2006-09-19  Paul Brook  <paul@codesourcery.com>

	PR target/28516
	* config/arm/arm.c (arm_unwind_emit_set): Handle reg = sp + const.

2006-09-17  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/28887
	* tree-ssa-loop-prefetch.c (analyze_ref): Strip nonaddressable
	component parts from the reference.
	(gather_memory_references_ref): Record the reference without the
	nonaddressable component parts.

2006-09-17  Steven Bosscher  <steven@gcc.gnu.org>

	PR c/25993
	* c-opts.c (c_common_handle_option): Ignore the -std options
	if the input language is assembly.

2006-09-17  Ira Rosen  <irar@il.ibm.com>

	PR tree-opt/21591
	* tree-data-ref.c (ptr_decl_may_alias_p): Look for the name memory
	tag first.
	(ptr_ptr_may_alias_p): Likewise.
	(record_record_differ_p): New function.
	(base_object_differ_p): Call record_record_differ_p.

2006-09-16  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/29059
	* tree-ssa-propagate.c (set_rhs): Reject MODIFY_EXPR right
	away for the expr argument.

2006-09-16  Steven Bosscher  <steven@gcc.gnu.org>

	PR tree-opt/27742
	* tree-vectorizer.c (vectorize_loops): Clear vect_loop_location
	before using it for dumping after vectorizing loops.

2006-09-16  Andrew Pinski  <pinskia@physics.uc.edu>
	    Jack Howarth  <howarth@bromo.med.uc.edu>

	PR target/29030
	* config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_recurse)
	skip on error_mark_node.
	(rs6000_darwin64_record_arg_recurse): Likewise.

2006-09-16  Steven Bosscher  <steven@gcc.gnu.org>

	* rtl.h (LABEL_OUTSIDE_LOOP_P): Remove.
	* doc/rtl.texi: Remove related documentation.

2006-09-16  Bernd Schmidt  <bernd.schmidt@analog.com>

	* loop-doloop.c (doloop_optimize): Remove bogus arg from debugging
	printf.

2006-09-15  Jim Wilson  <wilson@specifix.com>

	* config/ia64/ia64.c (ia64_legitimate_constant_p, cast CONST):
	Handle symbol offsets same as they are handled in ia64_expand_move
	and move_operand.

2006-09-16  Andreas Tobler  <a.tobler@schweiz.org>

	* loop-doloop.c (doloop_optimize): Change type of max_cost to int.
	Add forgotten parameter to the fprintf call.

2006-09-15  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/hpux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Add define.

2006-09-15  Uros Bizjak <uros@kss-loka.si>

	* doc/contrib.texi: Add my entry.

2006-09-15  Nick Clifton  <nickc@redhat.com>

	* doc/md.texi (Processor pipeline description): Fix typo in
	example of how to use the absence_set directive and reword the
	description to make it slightly easier to read.

2006-09-15  Bernd Schmidt  <bernd.schmidt@analog.com>

	* params.def (PARAM_MAX_ITERATIONS_COMPUTATION_COST): New.
	* loop-doloop.c (doloop_optimize): Use it to limit costs of
	expanding the number of iterations.
	* config/bfin/bfin.c (bfin_rtx_costs): Handle UDIV, UMOD.

	* cfgrtl.c (emit_insn_at_entry): New function.
	* rtl.h (emit_insn_at_entry): Declare it.
	* integrate.c (emit_initial_value_sets): Use it.

	* cfgrtl.c (emit_insn_at_entry): Use gcc_assert, not abort.

	* config/bfin/bfin.c (struct loop_info): New members block_bitmap and
	bad.
	(struct loop_work and related VEC declarations): Delete.
	(bfin_dump_loops): Print out new member bad.
	(bfin_bb_in_loop): Use plain bitmap test.  Don't recurse.
	(bfin_scan_loop): Don't recurse.
	(bfin_optimize_loop): Don't use a loop depth of -1 to indicate bad
	loops.  No longer need to update outer loops if the current one is
	found bad.  Move some validitiy checks to bfin_discover_loop.
	(bfin_discover_loop): New function, mostly split from bfin_reorg_loops,
	but changed not to check for nesting.  Also changed to use the new bad
	flag.
	(bfin_reorg_loops): Use bfin_discover_loop to find single loops one at a
	time.  Use bitmap based test to discover loop nesting.

2006-09-15  Kazu Hirata  <kazu@codesourcery.com>

	* doc/tm.texi (TARGET_FUNCTION_VALUE): Put @deftypefn all in
	one line.

2006-09-14  Richard Guenther  <rguenther@suse.de>
	    Kazu Hirata  <kazu@codesourcery.com>

	PR middle-end/28884.
	* doc/tm.texi (TARGET_FUNCTION_VALUE): Document.
	(FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE): Deprecate.
	Replace mentions of FUNCTION_VALUE and FUNCTION_OUTGOING_VALUE
	with TARGET_FUNCTION_VALUE.

2006-09-14  Anatoly Sokolov <aesok@post.ru>

	PR target/26504
	* config/avr/avr.h (FRAME_POINTER_CFA_OFFSET): Define.

2006-09-13  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tree-ssa.texi (Jumps): RESULT_DECL can also be an operand
	of a RETURN_EXPR

2006-09-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR debug/28980
	* dwarf2out.c (loc_descriptor_from_tree_1): Handle
	FUNCTION_DECL.

2006-09-13  Andreas Krebbel  <krebbel1@de.ibm.com>

	* basic_block.h (bb_has_eh_pred): Fix comment.

2006-09-13  Andreas Krebbel  <krebbel1@de.ibm.com>

	* flow.c (calculate_global_regs_live): Invalidate eh registers
	on eh edges. Renamed invalidated_by_call to invalidated_by_eh_edge.
	(propagate_block): Handle eh registers as if they were set at basic
	block start.
	* except.c (dw2_build_landing_pads): Don't emit clobbers for eh
	registers.
	* global.c (global_conflicts): Make eh registers to conflict with
	pseudos live at basic block begin.
	* basic_block.h (bb_has_eh_pred): New function.

2006-09-13  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/28982
	* reload.c (find_reloads_address_1): Use RELOAD_OTHER for the
	index of a PRE_MODIFY or POST_MODIFY address.
	* reload1.c (inc_for_reload): Use find_replacement on the original
	base and index registers.

2006-09-12  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/invoke.texi (mpreferred-stack-boundary): Remove exception
	for -Os. Update __m128 alignment requirement.

2006-09-13  Jan Hubicka  <jh@suse.cz>

	* cfganal.c (compute_dominance_frontiers_1): Don't be quadratic.

2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/28243
	* combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
	the insn to which the note was originally attached.

2006-09-12  Andrew Pinski  <pinskia@physics.uc.edu>
	    Roger Sayle  <roger@eyesopen.com>

	* dwarf2out.c (file_table_last_lookup): Move this GC'd declaration
	outside of #ifdef DWARF2_DEBUGGING_INFO to fix bootstrap failure
	on platforms that don't use dwarf for debug info.

2006-09-12  Jason Merrill  <jason@redhat.com>

	PR middle-end/28493
	* builtins.c (expand_builtin_setjmp_receiver): Clobber
	hard_frame_pointer_rtx after using it to update the frame pointer.

2006-09-12  Roger Sayle  <roger@eyesopen.com>

	* target-def.h (TARGET_ASM_OPEN_PAREN): Guard with an #ifndef.
	(TARGET_ASM_CLOSE_PAREN): Likewise.
	* config/alpha/osf5.h (TARGET_ASM_OPEN_PAREN): Define.
	(TARGET_ASM_CLOSE_PAREN): Likewise.

2006-09-12  Roger Sayle  <roger@eyesopen.com>

	PR target/22223
	* config/alpha/alpha.c (alpha_start_function): Don't emit stack
	frame information for frames larger than 512 Kbytes on Tru64 when
	using the native assembler.

2006-09-12  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/4520
	PR bootstrap/28784
	* cselib.c (cselib_hash_rtx): Avoid hashing on the address of labels
	and symbols.  Instead use the implementation from cse.c's hash_rtx.

2006-09-12  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* tree-vect-transform.c (vect_create_data_ref_ptr): Kill cast.
	(vect_transform_loop): Likewise.
	* tree-vectorizer.c (new_loop_vec_info): Likewise.
	(new_loop_vec_info): Likewise.
	(destroy_loop_vec_info): Likewise.
	* tree-dfa.c (create_var_ann): Use GCC_CNEW.
	(create_stmt_ann): Likewise.
	(create_tree_ann): Rename to ...
	(create_tree_common_ann): ... this one; allocate only the common part
	of annotations.
	* tree-vn.c (set_value_handle): Use get_tree_common_ann.
	(get_value_handle): Likewise.
	* tree-ssa-pre.c (phi_translate): Delay annotation allocation for
	get_tree_common_ann.
	* tree-vectorizer.h (set_stmt_info): Take stmt annotation.
	(vinfo_for_stmt): Use stmt annotations.
	* tree-flow.h (tree_ann_common_t): New type.
	(tree_common_ann, get_tree_common_ann, create_tree_common_ann): New.
	(tree_ann, get_tree_ann, create_tree_ann): New.
	* tree-flow-inline.h (get_function_ann): Do more type checking.
	(stmt_ann): Likewise.
	(tree_ann): Rename to ...
	(tree_common_ann): ... this one; return ony common_ann
	(get_tree_ann): Rename to ...
	(tree_common_ann): This one; return only common_ann.
	* tree-vect-patterns.c (vect_pattern_recog_1): Update call
	of set_stmt_info.

2006-09-11  Geoffrey Keating  <geoffk@apple.com>

	* config.gcc (i[34567]86-*-darwin*): Set with_arch and
	with_cpu by default.

	* dwarf2out.c (dwarf_file_data): New.
	(enum dw_val_class): Add dw_val_class_file.
	(struct dw_val_struct): Add val_file.
	(file_table): Change to a hash table.
	(file_table_emitted): Delete.
	(file_table_last_lookup_index): Delete.
	(emitcount): Delete.
	(last_emitted_file): New.
	(lookup_filename): Change prototype to return a struct dwarf_file_data.
	(init_file_table): Delete.
	(maybe_emit_file): Change prototype to take a struct dwarf_file_data.
	(AT_addr): Add comment.
	(add_AT_file): New.
	(AT_file): New.
	(get_AT_file): New.
	(print_die): Handle dw_val_class_file.
	(print_dwarf_line_table): Update for new file table structure.
	(attr_checksum): Do checksum a filename.
	(same_dw_val_p, same_attr_p): Do compare a filename.
	(size_of_die): Handle dw_val_class_file.
	(value_format): Likewise.
	(output_die): Likewise.  Also, call maybe_emit_file here.
	(struct file_info): Constify filenames.  Make file_idx a pointer
	to a struct dwarf_file_data.
	(struct dir_info): Constify directory names.  Remove 'used' field.
	(struct file_name_acquire_data): New.
	(file_name_acquire): New.
	(output_file_names): Modify to handle new file data structures.
	(add_src_coords_attributes): Use add_AT_file.
	(add_call_src_coords_attributes): Likewise.
	(dwarf2out_imported_module_or_decl): Likewise.
	(gen_subprogram_die): Modify for new file data structures.
	(gen_variable_die): Likewise.
	(file_table_eq): New.
	(file_table_hash): New.
	(file_table_last_lookup): New.
	(lookup_filename): Rewrite to handle new file data structures.
	(maybe_emit_file): Rewrite to handle new file data structures.
	(dwarf2out_source_line): Always call lookup_filename and
	maybe_emit_file.
	(dwarf2out_init): Create file_table here.
	(prune_unused_types_walk_attribs): Don't call maybe_emit_file here.
	(file_table_relative_p): New.
	(dwarf2out_finish): Change detection of relative filenames
	to work with new file data structures.  Move output_line_info call
	after debug_info output.

2006-09-11  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/13685
	PR target/27537
	PR target/28621
	* config/i386/i386.c (override_options): Always default to 16
	byte stack boundary.

2006-09-11  Alexandre Oliva  <aoliva@redhat.com>

	PR target/28672
	* var-tracking.c (dump_dataflow_set): Start dumping at
	register zero.
	(clobber_variable_part): Kill only the variable part in
	registers holding it, leaving other variables alone.

2006-09-11  Josh Triplett  <josh@freedesktop.org>

	* doc/extend.texi (Other Builtins): Actually use the macro
	argument in the documentation example for
	__builtin_types_compatible_p.

2006-09-11  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/28726
	* sched-deps.c (sched_analyze_reg): New function extracted from...
	(sched_analyze_1): ...here.  Call it to analyze references to
	registers.  Treat again writes to a stack register as writing to the
	register.
	(sched_analyze_2): ...and here.  Call it to analyze references to
	registers.  Treat again reads of a stack register as reading the
	register.

2006-09-11  Guenter Roeck  <guenter@roeck-us.net>
	    David Edelsohn  <edelsohn@gnu.org>

	PR target/27287
	* config/rs6000/spe.md (frob_df_di): Remove %H.
	(frob_di_df): Remove %H.  Change evmergelo to mr.
	(frob_di_df_2): Remove %H.  Change evldd to two loads.

2006-09-11  Hideki Iwamoto  <h-iwamoto@kit.hi-ho.ne.jp>

	* doc/cpp.texi: Fix names of charset options.

2006-09-10  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/29009
	* config/i386/i386.c (override_options): Use 128-bit
	stack boundary always for 64bits.

2006-09-10  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/28636
	* combine.c (force_to_mode): Test for side-effects before
	substituting by zero.
	(simplify_shift_const): Likewise for zero or other constants.

2006-09-10  Steven Bosscher  <steven@gcc.gnu.org>

	PR middle-end/26983
	* builtins.c (expand_builtin_setjmp): Force next_lab to be
	preserved.

2006-09-10  Richard Sandiford  <richard@codesourcery.com>

	PR target/29006
	* config/mips/mips-protos.h (mips_mem_fits_mode_p): Declare.
	* config/mips/mips.c (mips_expand_unaligned_store): Use the mode
	returned by mode_for_size, rather than the mode of src itself,
	to choose between 32-bit and 64-bit patterns.
	(mips_mem_fits_mode_p): New function.
	* config/mips/mips.md (mov_<load>l, mov_<load>r): Use it to check
	that the size of the source matches the size of the destination.
	(mov_<store>l, mov_<store>r): Likewise.

2006-09-10  Eric Christopher  <echristo@apple.com>

	* config/darwin.c (machopic_select_rtx_section): Add CONST_VECTOR
	for literal16.

2006-09-09  Eric Christopher  <echristo@apple.com>

	PR target/28995
	* config/darwin.c (machopic_select_rtx_section): Add TARGET_64BIT
	for literal16.

2006-09-09  Roger Sayle  <roger@eyesopen.com>
	    Nicolas Setton <setton@adacore.com>

	* dwarf2out.c (convert_cfa_to_fb_loc_list): Handle DW_CFA_set_loc.

2006-09-10  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.md (bungt_rev): New pattern.

2006-09-09  Paolo Bonzini  <bonzini@gnu.org>
	    Dale Johannesen  <dalej@apple.com>

	PR target/26778
	* regclass.c (struct reg_pref): Update documentation.
	(regclass): Set prefclass to NO_REGS if memory is the best option.
	(record_reg_classes): Cope with a prefclass set to NO_REGS.

2006-09-08  Eric Christopher  <echristo@apple.com>

	* config.gcc (i?86-*-darwin): Add 64-bit HWI support.
	* config/t-slibgcc-darwin: Support x86_64 multilib.
	* config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION):
	Return 1 for x86_64-darwin.
	* config/i386/t-darwin: Add m64 multilib.
	(LIB2_SIDITI_CONV_FUNCS): Use.
	(LIB2FUNCS_EXTRA): Ditto.
	* config/i386/darwin.h: Support x86_64.
	* config/i386/i386.c (override_options): Turn on flag_pic
	for x86_64-darwin. Disable flag_omit_pointer.
	(get_pc_thunk_name): Assert !TARGET_64BIT.
	(legitimate_address_p): Disable machopic addressing for
	x86_64.
	(legitimize_pic_address): Ditto.
	(ix86_expand_move): Ditto.
	(ix86_expand_call): Ditto.
	(machopic_output_stub): Ditto.
	* config/darwin.c (machopic_select_section): Support literal16.
	(machopic_select_rtx_section): Ditto.
	* config/darwin-sections.def: Ditto.
	* config/darwin-64.c: New.

2006-09-08  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/28504
	* c-tree.h (struct c_arg_info): Add pending_sizes.
	* c-parser.c (c_parser_parms_declarator,
	c_parser_parms_list_declarator): Initialize pending_sizes.
	* c-decl.c (get_parm_info): Initialize pending_sizes.
	(get_parm_info): Set pending_sizes.
	(grokdeclarator): Call put_pending_sizes for parameters for
	function definition only.

2006-09-07  Jason Merrill  <jason@redhat.com>

	PR middle-end/27724
	* varasm.c (output_constant): Only strip actual no-op conversions.

	PR target/13685
	* config/i386/i386.c (override_options): Use 128-bit
	stack boundary if -msse.

2006-09-07  Eric Christopher  <echristo@apple.com>

	* config/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Update
	comment.
	* config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE):
	Redefine.

2006-09-07  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c: Remove strange characters from comment above
	dwarf2out_frame_debug_expr.

2006-09-07  Eric Christopher  <echristo@apple.com>

	* config/rs6000/darwin.h (HANDLE_SYSV_PRAGMA): Move from here...
	* config/darwin.h: ... to here.

2006-09-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (x86_partial_flag_reg_stall): New.

	* config/i386/i386.h (x86_partial_flag_reg_stall): New.
	(TARGET_PARTIAL_FLAG_REG_STALL): New.

	* config/i386/i386.md (*ashldi3_cmp_rex64): Disabled for
	TARGET_PARTIAL_FLAG_REG_STALL.
	(*ashldi3_cconly_rex64): Likewise.
	(*ashlsi3_cmp): Likewise.
	(*ashlsi3_cconly): Likewise.
	(*ashlsi3_cmp_zext): Likewise.
	(*ashlhi3_cmp): Likewise.
	(*ashlhi3_cconly): Likewise.
	(*ashlqi3_cmp): Likewise.
	(*ashlqi3_cconly): Likewise.
	(*ashrdi3_cmp_rex64): Likewise.
	(*ashrdi3_cconly_rex64): Likewise.
	(*ashrsi3_cmp): Likewise.
	(*ashrsi3_cconly): Likewise.
	(*ashrsi3_cmp_zext): Likewise.
	(*ashrhi3_cmp): Likewise.
	(*ashrhi3_cconly): Likewise.
	(*ashrqi3_cmp): Likewise.
	(*ashrqi3_cconly): Likewise.
	(*lshrdi3_cmp_rex64): Likewise.
	(*lshrdi3_cconly_rex64): Likewise.
	(*lshrsi3_cmp): Likewise.
	(*lshrsi3_cconly): Likewise.
	(*lshrsi3_cmp_zext): Likewise.
	(*lshrhi3_cmp): Likewise.
	(*lshrhi3_cconly): Likewise.
	(*lshrqi2_cmp): Likewise.
	(*lshrqi2_cconly): Likewise.

2006-09-07 Uros Bizjak <uros@kss-loka.si>

	PR target/28946
	* config/i386/i386.md ("*ashldi3_cconly_rex64", "*ashlsi3_cconly",
	"*ashlhi3_cconly", "*ashlqi3_cconly", "*ashrdi3_one_bit_cconly_rex64",
	"*ashrdi3_cconly_rex64", "*ashrsi3_one_bit_cconly", "*ashrsi3_cconly",
	"*ashrhi3_one_bit_cconly", "*ashrhi3_cconly",
	"*ashrqi3_one_bit_cconly", "*ashrqi3_cconly",
	"*lshrdi3_cconly_one_bit_rex64", "*lshrdi3_cconly_rex64",
	"*lshrsi3_one_bit_cconly", "*lshrsi3_cconly",
	"*lshrhi3_one_bit_cconly", "*lshrhi3_cconly",
	"*lshrqi2_one_bit_cconly", "*lshrqi2_cconly": New patterns to
	implement only CC setting effects of shift instructions.

2006-09-07  Martin Michlmayr  <tbm@cyrius.com>

	* doc/contrib.texi: Add myself.

2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/28862
	* stor-layout.c (relayout_decl): Don't zero the alignment if it
	was set by the user.

2006-09-07  Paolo Bonzini  <bonzini@gnu.org>

	PR target/27117
	* config/sh/sh.md (divsi_inv_qitable, divsi_inv_hitable): New patterns.
	(divsi_inv_m1): Use them.
	(UNSPEC_DIV_INV_TABLE): New constant.

2006-09-06  James E Wilson  <wilson@specifix.com>

	PR rtl-opt/27883
	* flow.c (update_life_info): If UPDATE_LIFE_LOCAL and PROP_DEATH_NOTES
	then call count_or_remove_death_notes.

2006-09-06  Jason Merrill  <jason@redhat.com>

	PR c++/27371
	* tree-inline.c (copy_result_decl_to_var): New fn.
	(declare_return_variable): Use it.  Call declare_inline_vars here.
	(expand_call_inline): Not here.

2006-09-06  Diego Novillo  <dnovillo@redhat.com>

	* doc/contrib.texi: Update my entry.

2006-09-06  Nick Clifton  <nickc@redhat.com>

	* config/frv/frv.h (EXTRA_MEMORY_CONSTRAINT): Define.

2006-09-05  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/28937
	* tree-flow.h (tree_ssa_unswitch_loops): Return unsigned int.
	(canonicalize_induction_variables): Likewise.
	(tree_unroll_loops_completely): Likewise.
	(tree_ssa_prefetch_arrays): Likewise.
	(remove_empty_loops): Likewise.
	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Return
	TODO_cleanup_cfg instead of directly calling
	cleanup_tree_cfg_loop.
	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
	Likewise.
	(tree_unroll_loops_completely): Likewise.
	(remove_empty_loops): Likewise.
	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Likewise.
	* tree-ssa-loop.c (tree_ssa_loop_unswitch): Use the return value
	of tree_ssa_unswitch_loops.
	(tree_ssa_loop_ivcanon): Use the return value of
	canonicalize_induction_variables.
	(tree_ssa_empty_loop): Use the return value of
	remove_empty_loops.
	(tree_complete_unroll): Use the return value of
	tree_unroll_loops_completely.
	(tree_ssa_loop_prefetch): Use the return value of
	tree_ssa_prefetch_arrays.
	* passes.c (execute_todo): Before Cleanup CFG, set
	updating_used_alone and after cleanup CFG, call
	recalculate_used_alone.

2006-09-05  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/28952
	* tree-vect-transform.c (vectorizable_condition): Move the check
	for the type after the check for simple condition.

2006-09-05  J"orn Rennecke  <joern.rennecke@st.com>
	    Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/28764
	* mode-switching.c (optimize_mode_switching): Make the destination
	block of an abnormal edge have no anticipatable mode.  Don't
	insert mode switching code at the end of the source block of
	an abnormal edge.

2006-09-05  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/26847
	* simplify-rtx.c (struct simplify_plus_minus_op_data): Remove ix.
	(simplify_plus_minus_op_data_cmp): For REGs, break ties on the regno.
	(simplify_plus_minus): Count n_constants while filling ops.  Replace
	qsort with insertion sort.  Before going through the array to simplify
	pairs, sort it.  Delay early exit until after the first sort, exiting
	only if no swaps occurred.  Simplify pairs in reversed order, without
	special-casing the first iteration.  Pack ops after simplifying pairs.

2006-09-05  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.c (avr_mcu_types): Add support for at90pwm1 device.
	* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
	* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
	(avr_rtx_costs): Mark 'outer_code' argument with ATTRIBUTE_UNUSED.

2006-09-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28900
	* tree-if-conv.c (find_phi_replacement_condition): Gimplify
	compound conditional before creating COND_EXPR condition.

2006-09-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28905
	* tree-vrp.c (fix_equivalence_set): Manually implement
	!value_ranges_intersect_p to also handle symbolic ranges.

2006-09-05  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28935
	* tree-ssa-ccp.c (fold_stmt_r): Make sure to fold the condition
	of a COND_EXPR.

2006-09-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/27616
	* cse.c (table_size): New static variable.
	(new_basic_block): Initialize it to 0.
	(remove_from_table): Decrement it.
	(insert): Increment it.
	(fold_rtx_mem_1): New function, renamed from fold_rtx_mem.
	(fold_rtx_mem): Enforce a cap on the recursion depth.  Call
	fold_rtx_mem_1 if under the cap.
	(fold_rtx) <RTX_COMM_ARITH>: In the associative case, delay a little
	the lookup of the equivalent expression and test for equality of the
	first operand of the equivalent expression before in turn looking up
	an equivalent constant for the second operand.

2006-09-02  Geoffrey Keating  <geoffk@apple.com>

	Revert this change:
	2006-03-17  Alexandre Oliva  <aoliva@redhat.com>
	* dwarf2out.c (dwarf2out_stack_adjust): Always track the stack
	pointer, instead of assuming it is possible to derive the
	correct args size from a call insn.

2006-09-02  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27567
	* builtins.c (fold_builtin_memcpy, fold_builtin_memmove): Remove.
	(fold_builtin_mempcpy): Rename to...
	(fold_builtin_memory_op): ... this.  Optimize one element copy
	into an assignment.
	(fold_builtin_memset, fold_builtin_bzero, fold_builtin_bcopy): New
	functions.
	(expand_builtin_strcpy, expand_builtin_strncpy): Handle COMPOUND_EXPR.
	(expand_builtin_memcpy, expand_builtin_mempcpy,
	expand_builtin_memmove): Likewise.  Use fold_builtin_memory_op.
	(fold_builtin_1): Handle BUILT_IN_MEMSET, BUILT_IN_BZERO and
	BUILT_IN_BCOPY.  Use fold_builtin_memory_op for
	BUILT_IN_MEM{CPY,PCPY,MOVE}.

2006-09-01  DJ Delorie  <dj@redhat.com>

	* config/m32c/cond.md (cbranch<mode>4): Defer splitting until after reload.
	(stzx_16): Likewise.
	("stzx_24_<mode>"): Likewise.
	("stzx_reversed_<mode>"): Likewise, and make mode-specific.
	("cmp<mode>_op"): New.
	(cmp<mode>): Change to expander; just save operands.
	(b<code>_op): New.
	(b<code>): Change to expander, emit compare here.
	(s<code>_op): Change to use split and expander.
	(s<code>_24_op): Likewise.
	(s<code>_<mode>): New.
	(s<code>_<mode>_24): New.
	(movqicc_<code>_<mode): New.
	(movhicc_<code>_<mode>): New.
	(s<code>): New.
	(s<code>_24): New.
	* config/m32c/m32c.c (compare_op0, compare_op1): New.
	(m32c_pend_compare): New.
	(m32c_unpend_compare): New.
	(m32c_expand_scc): New.
	(m32c_expand_movcc): Emit the compare also.
	* config/m32c/predicates.md (mra_nopp_operand): New.

2006-09-01  J"orn Rennecke  <joern.rennecke@st.com>
	Richard Guenther  <rguenther@suse.de>
	Adam Nemet  <anemet@caviumnetworks.com>

	PR middle-end/27226
	* builtins.c (get_pointer_alignment): Handle more forms
	of base addresses that can be used to derive more precise
	information about alignment.

2006-09-01  Jason Merrill  <jason@redhat.com>

	PR c++/28899
	* gimplify.c (gimplify_modify_expr_rhs) [BIND_EXPR]: Handle
	want_value.

	* gimplify.c (voidify_wrapper_expr): Handle null type.

2006-09-01  Josh Conner  <jconner@apple.com>

	PR c++/25505
	* tree-nrv.c (dest_safe_for_nrv_p): New function.
	(execute_return_slot_opt): Use it.

2006-08-31  Josh Conner  <jconner@apple.com>

	PR c++/25505
	* tree-gimple.c (is_gimple_mem_rhs): Recognize functions
	returning aggregates.

2006-08-31  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/28839
	* tree-into-ssa.c (prune_unused_phi_nodes): Take into account kills in
	blocks in that phi arguments appear.

2006-08-31  Roger Sayle  <roger@eyesopen.com>

	PR other/22313
	* dwarf2out.c (add_fde_cfi): Use a set_loc if the current label is
	NULL, otherwise use an advance_loc4 to adjust relative to the
	current label.
	(output_cfi) <DW_CFA_set_loc>: Update the current label.
	(dwarf2out_switch_text_section): Reset the current label to avoid
	using advance_loc4 over section boundaries.

2006-08-31  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/24367
	* config/s390/s390.md ("movsi", "movdi" expander): Accept rtxes like
	r12 + SYMBOLIC_CONST.

2006-08-30  Richard Guenther  <rguenther@suse.de>

	* Makefile.in (see.o): Add $(EXPR_H) dependency.

2006-08-30  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/27735
	* cfgloopmanip.c (fix_loop_placements, fix_bb_placements, unloop):
	Add new argument to keep track of whether an irreducible region
	was affected.  All callers changed.
	(fix_irreducible_loops): Removed.
	(remove_path): Call mark_irreducible_loops if EDGE_IRREDUCIBLE_LOOP
	flags were invalidated.

2006-08-29  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.md (*fop_df_comm_mixed): Match DF operands
	instead of SF operands.
	(*fop_df_comm_sse): Likewise.
	(*fop_df_comm_i387): Likewise.
	(*fop_df_1_mixed): Likewise.
	(*fop_df_1_sse): Likewise.

2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
	    J"orn Rennecke  <joern.rennecke@st.com>

	PR tree-optimization/17506
	* tree-ssa.c (warn_uninit): If warning about a location outside of
	the current function, note where the variable was declared.

2006-08-28  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/28411
	* double-int.c (double_int_div): Use double_int_divmod.
	(double_int_divmod, double_int_sdivmod, double_int_udivmod,
	double_int_mod, double_int_smod, double_int_umod): New functions.
	* double-int.h (double_int_divmod, double_int_sdivmod,
	double_int_udivmod, double_int_mod, double_int_smod, double_int_umod):
	Declare.
	* tree-ssa-loop-ivopts.c (constant_multiple_of): Returns the result
	in double_int.
	(get_computation_aff, get_computation_cost_at): Handle double_int
	return type of constant_multiple_of.

2006-08-28  Kazu Hirata  <kazu@codesourcery.com>

	PR middle-end/26632
	* convert.c (convert_to_integer): Set TREE_NO_WARNING to 1 on
	an implicit conversion.

2006-08-28  Prafulla Thakare  <prafullat@kpitcummins.com>

	* config/h8300/h8300.c (TARGET_DEFAULT_TARGET_FLAGS): New.

2006-08-27  Roger Sayle  <roger@eyesopen.com>

	* ifcvt.c (cheap_bb_rtx_cost_p): Don't speculatively execute
	x87 instructions.

2006-08-27  Kazu Hirata  <kazu@codesourcery.com>

	* config/i386/crtfastmath.c: Fix a comment typo.

2006-08-26  Roger Sayle  <roger@eyesopen.com>

	* tree.h (CASE_LOW_SEEN, CASE_HIGH_SEEN): New macros for manipulating
	temporary visit flags on CASE_LABEL_EXPRs.
	* c-common.c (match_case_to_enum): Add function comment.  Avoid
	O(N) loop, by looking up both CASE_LOW_SEEN and CASE_HIGH_SEEN.
	(c_do_switch_warnings):  Reorganize to record CASE_LOW_SEEN and
	CASE_HIGH_SEEN for enumerated types.  If the switch expression is
	a constant, only warn if that constant value isn't handled.

2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>

	PR c++/24009
	* input.h (restore_input_file_stack): Declare.
	(INPUT_FILE_STACK_BITS): Define.
	* toplev.c (fs_p, input_file_stack_history,
	input_file_stack_restored, restore_input_file_stack): New.
	(push_srcloc, pop_srcloc): Check for input_file_stack_tick
	overflowing INPUT_FILE_STACK_BITS bits.  Save new state of stack.
	(pop_srcloc): Don't free old state of stack.

2006-08-26  David Edelsohn  <edelsohn@gnu.org>

	PR target/27544
	* doc/extend.texi (PowerPC Variable Attributes): Mention altivec.
	(PowerPC Type Attributes): New.

2006-08-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (function_arg_boundary): New.
	(function_arg, xtensa_gimplify_va_arg_expr): Limit alignment to
	STACK_BOUNDARY.
	* config/xtensa/xtensa.h (FUNCTION_ARG_BOUNDARY): Move code to new
	function_arg_boundary function that limits alignment to STACK_BOUNDARY.

2006-08-26  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/28683
	* cfgexpand.c (add_reg_br_prob_note): Check if last has exactly
	3 following insns.

2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* flow.c (verify_wide_reg): Use internal_error for consistency failure.
	(verify_local_live_at_start): Likewise.

2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/27893
	* gimplify.c (gimplify_decl_expr, gimplify_init_ctor_preeval,
	omp_add_variable): Treat sizes as variable whenever not
	INTEGER_CST.

2006-08-26  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28814
	* fold-const.c (fold_binary): Fold temporary to correct
	type before constructing new comparison.

2006-08-25  Fariborz Jahanian  <fjahanian@apple.com>

	PR c/28418
	* c-gimplify.c (gimplify_compound_literal_expr): Don't add
	variable again if DECL_SEEN_IN_BIND_EXPR_P.

2006-08-25  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/28299
	* c-decl.c (start_function): Don't try to process prototype
	information from old declaration that isn't a function.

2006-08-25  Jan Hubicka  <jh@suse.cz>

	PR target/28621
	* config/i386/crtfastmath.c (set_fast_math): Force stack alignment.

2006-08-25  Alan Modra  <amodra@bigpond.net.au>

	PR target/27075
	* config/rs6000/rs6000.c (print_operand): Only use e500 %y syntax
	for 8 byte objects.

2006-08-25  J"orn Rennecke  <joern.rennecke@st.com>

	PR tree-optimization/16876
	* c-typeck.c (c_convert_parm_for_inlining): Don't take early
	exit if PARM doesn't match VALUE.

2006-08-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Do not emit a
	literal_prefix directive.
	(XTENSA_DECLARE_FUNCTION_SIZE): Delete.
	* config/xtensa/linux.h (ASM_DECLARE_FUNCTION_SIZE): Delete.
	* config/xtensa/elf.h (ASM_DECLARE_FUNCTION_SIZE): Delete.

2006-08-25  David Edelsohn  <edelsohn@gnu.org>

	PR target/28753
	* config/rs6000/rs6000.md (movcc_internal1): Change operand 1
	predicate to general_operand.  Add 0->y and I->r alternatives.

2006-08-25  Kazu Hirata  <kazu@codesourcery.com>

	* doc/tm.texi: Fix a typo.
	* predict.c: Fix comment typos.

2006-08-25  Nick Clifton  <nickc@redhat.com>

	* config/mn10300/mn10300.h (TARGET_CPU_CPP_BUILTINS): Add
	assertions of "cpu" and "machine".

2006-08-24  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/28807
	* tree-ssa-operands.c (access_can_touch_variable): Don't say
	the access through a base which has an alias set of 0 cannot
	touch the variable.

2006-08-24  Bill Wendling  <wendling@apple.com>

	* doc/tm.texi (TARGET_DEFAULT_PACK_STRUCT): Fixed English.

2006-08-24  Jan Hubicka  <jh@suse.cz>

	* reload1.c (emit_reload_insns): Fix yet another typo in my patch.

2006-08-24  Jan Hubicka  <jh@suse.cz>

	PR debug/26881
	* cgraph.c: Fix comments.
	(cgraph_varpool_mark_needed_node): Mark only variables not already
	output to file.
	* cgraphunit.c: Update comments; include gt-cgraphunit.h
	(cgraph_varpool_assembled_nodes_queue): New static variable.
	(cgraph_varpool_assemble_decl): Record output decls for debug out code.
	(cgraph_varpool_output_debug_info): New function.
	(cgraph_finalize_compilation_unit, cgraph_optimize): Call it.
	* Makefile.in: Add gt-cgraphunit.h

2006-08-24  Jan Hubicka  <jh@suse.cz>

	* predict.c (probability_reliable_p): New predicate.
	(edge_probability_reliable_p, br_prob_note_reliable_p): Likewise.
	(predict_loops): Do not predict loop exit with less than 2%
	probability.
	* basic-block.h (edge_probability_reliable_p,
	br_prob_note_reliable_p): Declare.
	* ia64.h (ia64_print_operand): Do not disable on-chip branch
	prediction when static predictor is not reliable.
	* rs6000.c (output_cbranch): Likewise.

2006-08-23  Stuart Hastings  <stuart@apple.com>

	PR 28825
	* gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate,
	ix86_expand_vector_init_one_nonzero): Remove TARGET_SSE test.

2006-08-21  Geoffrey Keating  <geoffk@apple.com>

	PR debug/28692
	* dwarf2out.c (rtl_for_decl_init): Don't try to create RTL for
	complex values, nor for generic vector values.

2006-08-22  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28776
	* tree-scalar-evolution.c (fold_used_pointer): Add at_stmt
	parameter.  Convert arguments to arithmetic expression to the
	chrecs type.
	(analyze_scalar_evolution_1): Adjust caller.

2006-08-22  Jan Hubicka  <jh@suse.cz>

	Patch by Paolo Bonzini
	* reload1.c (emit_reload_insns): Fix incorrect bracketing introduced by
	my previous patch.

2006-08-22  Daniel Berlin  <dberlin@dberlin.org>

	PR tree-optimization/28003
	* tree-ssa-alias.c (compute_may_aliases): Compute call clobbered
	before grouping aliases.

2006-08-22  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_value_regno): Don't return FIRST_MMX_REG
	if !TARGET_MMX, and don't return FIRST_SSE_REG if !TARGET_SSE.

2006-08-21  Jason Merrill  <jason@redhat.com>

	PR c++/27115
	* gimplify.c (voidify_wrapper_expr): Handle STATEMENT_LIST as a
	wrapper.  Loop to handle nested wrappers.
	(gimplify_bind_expr): Remove temp parameter.
	(gimplify_modify_expr_rhs): Handle CLEANUP_POINT_EXPR, BIND_EXPR
	and STATEMENT_LIST on the rhs.
	(gimplify_statement_list): Voidify the STATEMENT_LIST.
	(gimplify_expr): Pass pre_p to gimplify_statement_list.
	(gimplify_target_expr): Remove special BIND_EXPR handling.

2006-08-21  J"orn Rennecke  <joern.rennecke@st.com>

	* config/sh/lib1funcs-Os-4-200.asm: Guard entire file with
	#if !__SHMEDIA__ .

2006-08-21  Olivier Hainque  <hainque@adacore.com>

	* gimplify.c (gimplify_init_constructor) <RECORD,UNION,ARRAY types>:
	Arrange for the temporary captures of components overlapping the lhs
	to happen before the lhs is possibly cleared.

2006-08-21  Mark Shinwell  <shinwell@codesourcery.com>

	* config/arm/pr-support.c (__gnu_unwind_execute): Insert " + 1" in
	necessary places to pass the correct "number of registers" values
	to _Unwind_VRS_Pop.

2006-08-20  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-alias.c (eq_ptr_info, ptr_info_hash): New function.
	(create_name_tags): Instead of quadratic checking use hashtable.
	* bitmap.h: Include hashtab.h.
	(bitmap_hash): Declare.
	* bitmap.c (bitmap_hash): New function.

2006-08-20  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* tree-optimize.c (tree_rest_of_compilation): Do not remove edges
	twice.
	* tree-inline.c (copy_bb): Use cgraph_set_call_stmt.
	* ipa-inline.c (cgraph_check_inline_limits): Add one_only argument.
	(cgraph_decide_inlining, cgraph_decide_inlining_of_small_function,
	cgraph_decide_inlining_incrementally): Update use of
	cgraph_check_inline_limits.
	* cgraph.c (edge_hash, edge_eq): New function.
	(cgraph_edge, cgraph_set_call_stmt, cgraph_create_edge,
	cgraph_edge_remove_caller, cgraph_node_remove_callees,
	cgraph_remove_node): Maintain call site hash.
	* cgraph.h (struct cgraph_node): Add call_site_hash.
	(cgraph_set_call_stmt): New function.

2006-08-20  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* reload1.c (reg_has_output_reload): Turn into regset.
	(reload_as_needed, forget_old_reloads_1, forget_marked_reloads,
	choose_reload_regs, emit_reload_insns): Update to new
	reg_has_output_reload.

2006-08-20  Jan Hubicka  <jh@suse.cz>

	PR middle-end/28779
	* ipa-inline.c (cgraph_decide_inlining, cgraph_early_inlining): Compute
	function body sizes.
	* cgraphunit.c (cgraph_analyze_function): Don't do so.

2006-08-20  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/28648 c:
	* tree.c (handle_dll_attribute): Return early if not a
	var or function decl.

2006-08-18  Joseph Myers  <joseph@codesourcery.com>

	PR target/27565
	* config/rs6000/rs6000.h (LOCAL_ALIGNMENT): For SPE, only adjust
	alignment of SPE vector types.

2006-08-18  Christophe Jaillet  <christophe.jaillet@wanadoo.fr>

	* tree.c (is_attribute_with_length_p): Remove a duplicated assert.

2006-08-17  Jakub Jelinek  <jakub@redhat.com>

	PR c/28744
	* cgraph.h (struct cgraph_node): Remove externally_visible
	bitfield.
	* cgraphunit.c (process_function_and_variable_attributes): Set
	local.externally_visible rather than externally_visible.

	PR c/28744
	* c-common.c (handle_externally_visible_attribute): First look
	at TREE_CODE and only if it is function or var decl, check for
	non-public objects.  Don't warn for DECL_EXTERNAL.
	* cgraphunit.c (process_function_and_variable_attributes): Warn
	if externally_visible attribute is used on non-public object.

2006-08-17  Jan Hubicka  <jh@suse.cz>

	PR tree-optimization/27865
	* reload1.c (forget_marked_reloads): New function.
	(forget_old_reloads_1): When data are passed, just mark the registers
	for later removal.
	(reload_as_needed): Use the new mechanizm.

2006-08-17  Alexandre Oliva  <aoliva@redhat.com>

	PR target/28146
	* reload.h (reg_equiv_alt_mem_list): New declaration.
	* reload1.c (reg_equiv_alt_mem_list): New definition.
	(reload): Initialize it and release it.
	(delete_output_reload): Use it.
	* reload.c (push_reg_equiv_alt_mem): New function.
	(find_reloads_toplev): Call it.
	(find_reloads_address, find_reloads_address_1): Likewise.
	(find_reloads_subreg_address): Likewise.

2006-08-17  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR rtl-optimization/28489
	* sched-ebb.c (begin_schedule_ready): Create basic block
	at the right place.
	(advance_target_bb): Skip empty blocks.
	* haifa-sched.c (bb_note): Make global.
	* sched-int.h (bb_note): Add prototype.

2006-08-16  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27865
	* tree-vrp.c (adjust_range_with_scev): Do not use TYPE_{MIN,MAX}_VALUE
	for pointer types.
	* tree-scalar-evolution.c (fold_used_pointer_cast, pointer_offset_p,
	fold_used_pointer, pointer_used_p): New functions.
	(analyze_scalar_evolution_1): Use fold_used_pointer.
	* tree-chrec.c (convert_affine_scev): Convert no-op casts correctly.
	* tree-ssa-loop-ivopts.c (generic_type_for): Return integral type
	for pointers.

2006-08-17  Paolo Bonzini <bonzini@gnu.org>

	PR c++/28573
	* c-common.c (fold_offsetof_1): Add an argument and recurse down to it
	or the INTEGER_CST.  Fail on a CALL_EXPR.
	(fold_offsetof): Pass new argument to fold_offsetof_1.
	* c-parser.c (c_parser_postfix_expression): Don't include a NULL
	operand into an INDIRECT_REF.
	* c-typeck.c (build_unary_op): Adjust call to fold_offsetof.

2006-08-16  Zdenek Dvorak <dvorakz@suse.cz>

	PR gcov/profile/26570
	* value-prof.c (static_values): Removed.
	(tree_find_values_to_profile): Do not set static_values.
	(find_values_to_profile): Do not free static_values.
	* profile.c (instrument_values): Do not free the values.
	(branch_prob): Free the values.

2006-08-16  Naveen.H.S  <naveenh@kpitcummins.com>

	* config/m32c/m32c_lib1.S (__mulsi3): Use only registers for dest.

2006-08-16  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/27697
	* c-typeck.c (build_component_ref): Combine qualifiers of
	structure or union and field.

2006-08-16  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/28071
	* basic-block.h (bb_dom_dfs_in, bb_dom_dfs_out): Declare.
	* dominance.c (bb_dom_dfs_in, bb_dom_dfs_out): New functions.
	* tree-into-ssa.c (struct dom_dfsnum): New.
	(cmp_dfsnum, find_dfsnum_interval, prune_unused_phi_nodes): New
	functions.
	(insert_phi_nodes_for): Use prune_unused_phi_nodes instead of
	compute_global_livein.
	(prepare_block_for_update, prepare_use_sites_for): Mark the uses
	in phi nodes in the correct blocks.

2006-08-16  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/28364
	* tree-ssa-loop-ivopts.c (aff_combination_to_tree): Handle zero
	correctly.
	(fold_affine_expr): New function.
	(may_eliminate_iv): Use fold_affine_expr.

2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/27489
	* c-typeck.c (c_start_case): Handle invalid orig_type correctly.
	Clean up.

2006-08-16  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (-Wno-deprecated-declarations): Fixup use of pxref.
	* doc/cppopts.texi (-MD): Likewise.

2006-08-15  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c/28287
	* c-common.c (handle_weak_attribute): Ignore and warn if
	not a FUNCTION_ or VAR_DECL.

2006-07-15  Mike Stump  <mrs@apple.com>

	PR c/28280
	* c-parser.c (c_parser_typeof_specifier): Don't use
	c_finish_expr_stmt, open code desired semantics instead.

2006-08-15  Nick Clifton  <nickc@redhat.com>

	* config.gcc (x86-mingw32): Add a gthr-win32.h including makefile
	fragment to tmake_file only if threads are enabled.
	* config/i386/t-mingw32 (LIB2FUNCS_EXTRA): Move to...
	* config/i386/t-gthr-win32: New file. ... here.

2006-08-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/28649
	* c-parser.c (c_parser_compound_statement_nostart): Reset
	parser->error after each statement.

2006-08-15  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/28713
	* omp-low.c (lower_omp_parallel): Convert t to
	receiver_decl's type.
	(expand_omp_parallel): STRIP_NOPS from the MODIFY_EXPR
	source before comparison.

	PR middle-end/28724
	* gimplify.c (gimplify_omp_atomic_pipeline): Convert oldival
	to itype in assignment to oldival2.

2006-07-14  Andrew Pinski  <pinksia@physics.uc.edu>

	PR c/27490
	PR c/27489
	* c-typeck.c (build_compound_expr): If the second expression
	is an error mark, then just return an error mark instead of
	creating a COMPOUND_EXPR.

2006-07-14  Mike Stump  <mrs@apple.com>

	* Makefile.in (LIBGCC_DEPS): Don't depend on LANGUAGES.

2006-08-14  Kazu Hirata  <kazu@codesourcery.com>

	* c-decl.c, var-tracking.c: Fix comment typos.

2006-08-14  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/28634
	* reorg.c (fill_slots_from_thread): Do not assume A + X - X == A
	for floating-point modes unless flag_unsafe_math_optimizations.

2006-08-13  Alexandre Oliva  <aoliva@redhat.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/27184
	* tree.c (build_array_type): Unify array types with
	unspecified index_type.
	* c-decl.c (grokdeclarator): Make sure we do not modify a
	unified incomplete array type.
	* c-typeck.c (store_init_value): Create distinct type before
	filling in the index type in an initializer from a compound
	literal.

	* c-decl.c (grokdeclarator): Remove code where we copy the
	array type over.

2006-08-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-pass.h (TODO_update_ssa): Fix which bit is used to take
	into account for TODO_dump_cgraph.
	(TODO_update_ssa_no_phi): Likewise.
	(TODO_update_ssa_full_phi): Likewise.
	(TODO_update_ssa_only_virtuals): Likewise.
	(TODO_remove_unused_locals): Likewise.
	(TODO_set_props): Likewise.
	(TODO_update_stmt_usage): Likewise.

2006-08-13  Dirk Mueller  <dmueller@suse.de>

	* c-common.c (strict_aliasing_warning): Fix formatting.

2006-08-13  Matthias Klose  <doko@debian.org>

	* doc/invoke.texi: Fix spelling errors.

2006-08-11  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/23454
	* reorg.c (relax_delay_slots): Update comment.

2006-08-11  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28651
	* simplify-rtx.c (simplify_const_relational_operation):
	Simplify A CMP B to A - B CMP 0 only for EQ and NE comparison
	codes.

2006-08-10  Eric Botcazou  <ebotcazou@adacore.com>

	* tree.c (build1_stat): Also propagate the TREE_CONSTANT and
	TREE_INVARIANT flags for a VIEW_CONVERT_EXPR.

2006-08-10  Paul Brook  <paul@codesourcery.com>

	* final.c (final_scan_insn): Clear current_insn_predicate before
	outputting inline asm.

2006-08-10  Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-optimization/26197
	* tree-ssa-alias.c (new_type_alias): Takes additional argument. Calls
	get_ref_base_and_extent and overlap_subvar to add only relevant
	subvars as may-aliases.
	(add_may_alias_for_new_tag): New function, factored out of
	new_type_alias.
	* tree-vect-transform.c (vect_create_data_ref_ptr): Call new_type_alias
	with additional argument.
	* tree-flow.h (new_type_alias): Takes additional argument.

2006-08-09  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov.c (no_data_file): New flag.
	(read_count_file): Set it if data file not present.  Assume counts
	zero if not found.
	(output_lines): Don't name the data file, if there wasn't one.

2006-08-09  Eric Botcazou  <ebotcazou@adacore.com>

	* config/rs6000/rs6000.c (print_operand) <D>: Fix comment and adjust.
	(rs6000_generate_compare): Tweak comments.
	* config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Fix comment.

2006-08-09  Alexandre Oliva  <aoliva@redhat.com>

	* var-tracking.c (enum micro_operation_type): Add MO_COPY.
	(var_debug_decl): New function.
	(var_reg_set): Follow debug decl link.  Add location even if
	reg is already known to hold some other variable.
	(var_mem_set): Follow debug decl link.
	(var_reg_delete_and_set, var_mem_delete_and_set): Follow debug
	decl link.  Delete other known locations of the variable part
	if requested.
	(var_reg_delete, var_mem_delete): Delete other known locations
	of the variable part if requested.
	(same_variable_part_p): New function.
	(add_stores): Select MO_COPY when appropriate.
	(vt_initialize): Handle it.
	(compute_bb_dataflow, emit_notes_in_bb): Likewise.  Delete
	known locations for MO_SET and MO_CLOBBER.
	(find_variable_location_part): New function.
	(set_variable_part, delete_variable_part): Use it.
	(clobber_variable_part): New function.
	* dwarf2out.c (dwarf2out_var_location): Do not follow debug
	decl link.

2006-08-07  Victor Kaplansky <victork@il.ibm.com>

	PR tree-optimization/26969
	* tree-vect-analyze.c (vect_analyze_loop_form): Add check of latch
	with an empty list of PHIs.

2006-08-06  Paolo Bonzini  <bonzini@gnu.org>

	PR target/27827

	* conffig/i386/i386.md: Add peephole2 to avoid "fld %st"
	instructions.

2006-08-06  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.c (m68k_output_function_epilogue): Fix format
	string.  Whitespace and comment fixup.

2006-08-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/28502
	* c-decl.c (validate_proto_after_old_defn): Return false on invalid
	argument.

	PR c/27721
	* c-typeck.c (build_modify_expr): Test earlier for non-lvalues.

	PR c/28136
	* c-parser.c (c_parser_postfix_expression_after_paren_type): Robustify.

2006-08-04  Jan Hubicka  <jh@suse.cz>

	PR target/26655
	PR target/28270
	* reload.c (push_reload): Patch out the mismatching instruction;
	return early.
	(find_reload): Bail out if the instruction was patched out.

2006-08-04  Jan Hubicka  <jh@suse.cz>

	PR tree-optimization/24888
	* tree-inline.c (expand_call_inline): Do not re-record variables.
	(declare_inline_vars): Add variable to unexpanded_var_list.

2006-08-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	    Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/26244
	* cse.c (fold_rtx): Correctly associate shifts when const_arg1 and/or
	inner_const are negative or greater than or equal to the bitsize of
	MODE.  If SHIFT_COUNT_TRUNCATED is false, the values aren't associated.
	Otherwise, the values are masked using GET_MODE_BITSIZE (mode) - 1.
	Simplify complicated if statement.  For ASHIFT and LSHIFTRT, return
	CONST0_RTX (mode) when the new shift count is greater than or equal to
	to the bitsize of the object being shifted and XEXP (y, 0) has no side
	effects.

2006-08-04  Kazu Hirata  <kazu@codesourcery.com>

	* tree-cfg.c: Fix a comment typo.

2006-08-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28148
	* varasm.c (output_constant): Give the front end another chance to
	expand constants, after stripping NOPs.

2006-08-03  Jan Hubicka  <jh@suse.cz>

	* domwalk.c (walk_dominator_tree): Reorganize to non-recursive
	implementation.

2006-08-03  Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-optimization/27770
	* tree-vectorizer.h (get_vectype_for_scalar_type): Function
	declaration removed (moved to tree-flow.h).
	(vect_can_force_dr_alignment_p): Likewise.
	* tree-flow.h (get_vectype_for_scalar_type): New function declaration
	(moved from tree-vectorizer.h).
	(vect_can_force_dr_alignment_p): Likewise.
	* tree-vectorizer.c (vect_print_dump_info): Allow calling this function
	from outside the vectorizer - in particular from cgraph stage.
	* tree-vect-analyze.c (vect_compute_data_ref_alignment): Don't increase
	the alignment of global arrays when -fsection-anchors is enabled.
	* cgraphunit.c (cgraph_increase_alignment): New function.
	(cgraph_optimize): Call cgraph_increase_alignment.

2006-08-03  David Edelsohn  <edelsohn@gnu.org>

	PR target/27566
	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Do
	not reload a SPE symbol_ref into a lo_sum address.

2006-08-02  Daniel Jacobowitz  <dan@codesourcery.com>

	PR debug/28063
	* dwarf2out.c (prune_unused_types_prune): Move call to
	prune_unused_types_update_strings to cover the parent DIE also.

2006-08-02  Jan Hubicka  <jh@suse.cz>

	PR gcov/profile/28480
	* tree-cfg.c (change_bb_for_stmt): New function.
	(tree_merge_blocks, tree_split_blocks): Use it.

2006-08-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28250
	PR c++/28257
	PR c++/28259
	PR c++/28267
	* toplev.c (compile_file): Return early on errorcount or sorrycount.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Likewise.
	(cgraph_optimize): Likewise.

2006-08-01  Stuart Hastings  <stuart@apple.com>

	* rtl.h (UINTVAL) New.
	* config/rs6000/rs6000.c (SMALL_INT) Use it.
	* testsuite/gcc.dg/20060801-1.c: New.

2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	PR debug/23336
	* c-typeck.c (build_external_type): Mark used enum types.
	* dwarf2out.c (dwarf2out_abstract_function): Save and restore
	cfun also.
	(gen_subprogram_die): Whitespace fix.

2006-08-01  Jan Hubicka  <jh@suse.cz>

	* tree-outof-ssa.c (check_replaceable): Do not allocate def_vars
	bitmap when not needed.
	* tree-ssa-pre.c (bitmap_set_and, bitmap_set_and_compl): Free temporary
	bitmaps.

2006-08-01  Dirk Mueller  <dmueller@suse.de>

	* tree-vrp.c (fix_equivalence_set): Avoid bitmap memory leak.

2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Makefile.in: Revert part of previous patch:
	Replace $(VARRAY_H) by varray.h in definition of BASIC_BLOCK_H
	and REGS_H.

2006-07-30  Eric Christopher  <echristo@apple.com>

	PR target/27543
	* doc/extend.texi (i386 Variable Attributes): Add anchor.
	(PowerPC Variable Attributes): New section.

2006-07-30  Atsushi Nemoto  <anemo@mba.ocn.ne.jp>

	PR target/28126 (partial fix)
	* config/mips/mips.md (tls_get_tp_<mode>): Set can_delay to no.

2006-07-28  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* cfgrtl.c (rtl_delete_block): Free regsets.
	* flow.c (allocate_bb_life_data): Re-use regsets if available.

2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Makefile.in: Use $(HEADER_H) instead of header.h in dependencies
	and variables used in dependencies.

2006-07-27  Arjan van de Ven <arjan@linux.intel.com>

	* config/i386/i386.md (stack_tls_protect_set_di) Use %gs rather than
	%fs for -mcmodel=kernel.
	(stack_tls_protect_test_di): Likewise.

2006-07-27  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Use mkinstalldirs.

2006-07-27  H.J. Lu  <hongjiu.lu@intel.com>

	PR driver/28437
	* opts-common.c (prune_options): Skip joined switches.

2006-07-27  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* cselib.c (cselib_process_insn): Don't remove useless values too
	often for very large hashtables.

2006-07-27  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* global.c (greg_obstack): New obstack.
	(allocate_bb_info): Use it.
	(free_bb_info): Likewise.
	(modify_reg_pav): Likewise.

2006-07-27  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_fixed_mathfn): When long and long long are the
	same size, canonicalize llceil*, llfloor*, llround* and llrint*
	functions to their lceil*, lfloor*, lround* and lrint* forms.

2006-07-27  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	PR gcc/28508
	* config/m32r/m32r.md (branch_insn): Reduce pc range for short
	branch.
	(rev_branch_insn): Likewise.

2006-07-27  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* regmove.c (reg_is_remote_constant_p): Avoid quadratic behaviour.
	(reg_set_in_bb, max_reg_computed): New static variables.
	(regmove_optimize): Free the new array.
	(fixup_match_1): Update call of reg_is_remote_constant_p.

2006-07-26  Jan Hubicka  <jh@suse.cz>

	PR tree-optimization/27882
	* cgraph.c (cgraph_remove_node): Clear needed, reachable, next, previous
	and decl fields.
	* cgraphunit.c (cgraph_reset_node): Expect cgraph_remove_node to kill
	next pointer
	(cgraph_analyze_compilation_unit): Likewise.
	* ipa.c (cgraph_remove_unreachable_nodes): Likewise.
	* ipa-inline.c (cgraph_decide_recursive_inlining): Likewise.
	(cgraph_early_inlinine): Make order garbage collected.
	* Makefile.in (gt-ipa-inline): New garbagecollected file.

2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* dbxout.c (output_types_sort): Add a comment.
	(output_used_types): Free the VEC.

2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* function.c (reorder_fix_fragments): Delete.
	(reorder_blocks): Don't call it.
	(reorder_blocks_1): Put all subblocks under the origin block.

2006-07-26  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/27907
	* expr.c (force_operand): Use convert_move to handle FLOAT_EXTEND and
	FLOAT_TRUNCATE.

2006-07-25  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/28473
	* convert.c (convert_to_integer): When transforming (T)foo(x) into
	bar(x) check that bar's result type can represent all the values of T.

2006-07-25  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-chrec.c (chrec_convert_aggressive): Return NULL on failure.

2006-07-25  Nick Clifton  <nickc@redhat.com>

	* ggc-page.c (NUM_SIZE_LOOKUP): New constant - the length of the
	size_lookup[] array.
	(ggc_alloc_stat): Use NUM_SIZE_LOOKUP.
	(ggc_pch_count_object): Likewise.
	(ggc_pch_alloc_object): Likewise.
	(ggc_pch_write_object): Likewise.
	(init_ggc): Do not attempt to initialize entries in the
	size_lookup[] array for objects whose size is greater than than
	the length of the array.

2006-07-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* dbxout.c (output_used_types_helper): Push queued types
	on a VEC.
	(output_types_sort): New.
	(output_used_types): Collect used types on a VEC and sort them
	before emission.

2006-07-24  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28463
	* cgraph.c (cgraph_remove_node): Do not check if dumps
	are enabled.
	* cgraphunit.c (cgraph_optimize): Likewise.

2006-07-24  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* tree-cfg.c (tree_split_block): Do not allocate new stmt_list nodes.
	* tree-iterator.c (tsi_split_statement_list_before): Do not crash when
	splitting before first stmt.

2006-07-24  Jan Hubicka  <jh@suse.cz>

	PR rtl-optimization/28071
	* ipa-inline.c (update_caller_keys): Remove edges that
	are no longer inline candidates.

2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>

	PR debug/27473
	* dbxout.c (output_used_types_helper, output_used_types): New.
	(dbxout_symbol): Call output_used_types.

2006-07-23  Jan Hubicka  <jh@suse.cz>

	PR c/25795
	PR c++/27369
	* cgraph.c (cgraph_varpool_nodes): Export.
	(decide_is_variable_needed): Ignored "used" attribute in
	unit-at-a-time mode.
	* cgraph.h (cgraph_varpool_nodes): Declare.
	* cgraphunit.c (decide_is_function_needed): Ignored "used" attribute in
	unit-at-a-time mode.

2006-07-23  Roger Sayle  <roger@eyesopen.com>

	PR target/28247
	* gthr-solaris.h: Prototype __gthrw forms of thr_self, mutex_init and
	mutex_destroy even when !_LIBOOBJC.  Remove duplicate prototype of
	the __gthrw form of thr_keycreate.
	(__gthread_key_delete): Silence the unused argument warning.

2006-07-23  Steven Bosscher  <steven@gcc.gnu.org>

	PR debug/25468
	* config/elfos.h (ASM_OUTPUT_ASCII): Remove 'register' marks.
	Cache the last found '\0' marker to avoid quadratic behavior.

2006-07-23  Jan Hubicka  <jh@suse.cz>

	* i386.md (subsi_3_zext): Fix output template.

2006-07-21  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (C++ Dialect Options): Note that
	-fvisibility-inlines-hidden doesn't affect explicitly
	instantiationed inline methods.

2006-07-20  Roger Sayle  <roger@eyesopen.com>

	* config.gcc (i[34567]86-*-solaris2*): Add usegas.h to $tm_file
	if the target assembler is GNU binutils' gas.
	* config/i386/sol2-10.h (ASM_SPEC): Check USE_GAS to determine
	whether to pass GNU gas or native as command line options.

2006-07-20  Jason Merrill  <jason@redhat.com>

	* tree.c (remove_attribute): New fn.
	* tree.h: Declare it.

2006-07-20  Paul Brook  <paul@codesourcery.com>

	PR 27363
	* cse.c (cse_insn): Add destination addresses to hash table. Check if
	they are invalidated by this instruction.

2006-07-21  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/28427
	* config/i386/cygming.h (MAX_OFILE_ALIGNMENT): Define.

2006-07-20  Eric Christopher  <echristo@apple.com>

	PR target/26877
	* config/i386/i386.h (OPTION_DEFAULT_SPECS): Reorder.

2006-07-19  Eric Christopher  <echristo@apple.com>

	* config/t-slibgcc-darwin (stmp-lipo): Remove.
	Rewrite dependencies for libgcc_s.1.dylib.

2006-07-19  Jakub Jelinek  <jakub@redhat.com>

	* except.c (duplicate_eh_regions_1): Clear next_peer.

2006-07-17  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Document that
	-mlongcall does not guarantee all calls will be long.
	* doc/extend.texi (long_call/short_call): Document that longcall
	does not guarantee a long call will be used.
	(longcall/shortcall): Likewise.

2006-07-18  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/28283
	* expmed.c (expand_shift): Additionally check that the shift_cost
	is not MAX_COST and that INTVAL(op1) is less than MAX_BITS_PER_WORD
	before implementing a LSHIFT_EXPR as a sequence of additions.
	* config/sh/sh.c (shift_costs): Return MAX_COST to inform the
	middle-end that DImode shifts need to be synthesized by expand.

2006-07-18  Diego Novillo  <dnovillo@redhat.com>

	PR 28410
	* tree-ssa-operands.c (access_can_touch_variable): Update
	comment.
	Return true if ALIAS is .GLOBAL_VAR.

2006-07-18  David Daney  <ddaney@avtrex.com>

	* gcc.c (display_help): Fix typo in help text.

2006-07-18  Olivier Hainque  <hainque@adacore.com>

	* tree.h (categorize_ctor_elements): Adjust prototype and add
	descriptive comment, both in accordance with the interface change
	described below.
	* varasm.c (constructor_static_from_elts_p): New function.
	Whether a constructor node is a valid static constant initializer
	if all its elements are.
	(initializer_constant_valid_p) <CONSTRUCTOR value>: Use it.
	* output.h: Declare it.
	* expr.c (categorize_ctor_elements_1): Return whether the constructor
	is a valid constant initializer instead of computing the number of
	non-constant elements.  Use constructor_static_from_elts_p for this
	purpose.  Replace the head comment with an indication that this is a
	helper for categorize_ctor_elements.
	(categorize_ctor_elements): Same interface change as for the _1
	helper.  Former head comment from this helper moved here, adjusted to
	account for the interface changes.
	(mostly_zeros_p): Adjust call to categorize_ctor_elements.
	(all_zeros_p): Likewise.
	* gimplify.c (gimplify_init_constructor): Decide whether we can make
	static versions of the constructor from the categorize_ctor_elements
	return value instead of the formerly computed number of non-constant
	elements.

2006-07-18  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.
	* Makefile.in (build_libsubdir): New configure substitution
	(build_libobjdir): New variable.
	(BUILD_LIBIBERTY): Use it.

2006-07-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/28286
	* c-pragma.c (handle_pragma_pack): Handle invalid constants.

2006-07-18  Alexandre Oliva  <aoliva@redhat.com>

	PR c/26993
	* c-common.c (handle_weakref_attribute): Ignore attribute in
	the same conditions the alias attribute is ignored.

2006-07-17  Carlos O'Donell  <carlos@codesourcery.com>

	* dbxout.c (dbxout_function_end): Do not increment scope_labelno.
	(dbxout_begin_prologue): Increment scope_labelno.

2006-07-17  Richard Henderson  <rth@redhat.com>

	PR 27889
	* tree-nested.c (create_tmp_var_for): Set DECL_COMPLEX_GIMPLE_REG_P
	if needed.

2006-07-17  Roger Sayle  <roger@eyesopen.com>
	    Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/i386/gmon-sol2.c: Silence compilation warnings by partially
	synchronizing code with config/sparc/gmon-sol2.c.  Remove #if 0
	blocks.  #include "tconfig.h" and "tsystem.h" to prototype system
	functions such as sbrk, write, etc..  Add function prototypes.
	Convert function declarations from K&R to ISO C.  Cast pointers
	to "long" and "unsigned long" instead of "int" and "unsigned int".
	Convert tokens following #endif into comments.

2006-07-17  Toon Moene  <toon@moene.indiv.nluug.nl>

	* invoke.texi: Remove mention of f77; Reformat table for
	inline parameter options correctly; mention that -malign-double
	is default on x86-64 targets.

2006-07-17  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-chrec.c (avoid_arithmetics_in_type_p): New.
	(convert_affine_scev, chrec_convert_aggressive): Use
	avoid_arithmetics_in_type_p.  Do not check for the subtypes
	separately.

2006-07-17  Richard Sandiford  <richard@codesourcery.com>

	PR middle-end/28403
	* optabs.c (expand_doubleword_shift): Wrap the call to
	do_compare_rtx_and_jump with NO_DEFER_POP and OK_DEFER_POP.

2006-07-17  Richard Sandiford  <richard@codesourcery.com>

	PR middle-end/28402
	* optabs.c (expand_binop): Pass next_methods rather than methods
	to expand_doubleword_shift.

2006-07-17  J"orn Rennecke  <joern.rennecke@st.com>

	PR other/28251
	* tree.h (dump_addr): Declare.
	* print-tree.c (dump_addr): New function.
	(print_node_brief, print_node): Use it.
	* print-rtl.c (print_rtx): Likewise.
	* common.opt (-fdump-noaddr): New option.
	* doc/invoke.texi (-fdump-noaddr): Document.
	* loop-unroll.c (si_info_hash): Make hash independent of addresses.
	(ve_info_hash): Likewise.

2006-07-13  Andrew Haley  <aph@redhat.com>

	PR tree-optimization/19505
	* tree-cfgcleanup.c (tree_forwarder_block_p): If we have an EH
	edge leaving this block, make sure that the destination of this
	block has only one predecessor.

2006-07-17  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28238
	* tree-inline.c (copy_bb): Check if we produced valid
	gimple copying and substituting a stmt.  If not, gimplify
	it.

2006-07-16  Eric Botcazou  <ebotcazou@adacore.com>

	* optabs.c (maybe_encapsulate_block): New function extracted from...
	(emit_libcall_block): ...here.  Invoke it on the block of insns to
	maybe emit REG_LIBCALL/REG_RETVAL notes around the block.
	(emit_no_conflict_block): Likewise.

2006-07-16  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (sparc-sun-solaris2*): Add GMP version number.

2006-07-15  Roger Sayle  <roger@eyesopen.com>

	* tree-gimple.c (is_gimple_stmt): Sink test of IS_EMPTY_STMT into
	a new NOP_EXPR case of the switch statement.

2006-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR middle-end/28160
	* stor-layout.c (place_field): Take the bit field with
	an excessive size into account in the ms-bitfiled case.

	PR middle-end/28161
	* stor-layout.c (place_field): Use DECL_BIT_FIELD_TYPE of
	the previous bit field.

2006-07-14  Eliot Dresselhaus  <eliot@sonic.net>

	PR target/27287
	* config/rs6000/spe.md (frob_di_df_2): Add m->r alternative.

2006-07-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux-unwind.h (s390_fallback_frame_state): Detect
	signal frames correctly even when the signal was installed with
	sa_restorer set.

2006-07-14  Carlos O'Donell  <carlos@codesourcery.com>

	* dbxout.c (dbxout_begin_prologue): Emit LFBB label at function start.
	(dbxout_function_end): Use local label LFBB. Remove hook
	DBX_OUTPUT_NFUN.
	(dbxout_source_line): Use local label LFBB.
	(dbxout_block): Likewise.
	(dbx_output_lbrac): Remove hook DBX_OUTPUT_LBRAC.
	(dbx_output_rbrac): Remove hook DBX_OUTPUT_RBRAC.
	* config/rs6000/linux64.h: Remove DBX_OUTPUT_LBRAC, DBX_OUTPUT_RBRAC,
	and DBX_OUTPUT_NFUN.

2006-07-13  Janis Johnson  <janis187@us.ibm.com>

	* doc/sourcebuild.texi (Test Directives): Document dg-shouldfail.

2006-07-13  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_varpool_analyze_pending_decls): Call
	align_variable.
	* output.h (align_variable): Declare.
	* varasm.c (align_variable): Export.
	* value-prof.c (tree_value_profile_transformations): Recompute iterator
	when basic block changed.

2006-07-13  Nick Clifton  <nickc@redhat.com>

	* config/sh/sh.c (sh_reorg): Ignore deleted insns whilst
	walking the LOG_LINKS chain.

2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (C++ Dialect Options): Explain difference
	between -fvisibility-inlines-hidden and setting hidden
	visibility explicitly.

2006-07-12  Eric Christopher  <echristo@apple.com>

	* config/t-slibgcc-darwin (SHLIB_LINK): Don't munge stmp-lipo.
	(stmp-lipo): Depend on libgcc.a.

2006-07-12  Kazu Hirata  <kazu@codesourcery.com>

	* tree.c: Fix a comment typo.

2006-07-12  Naveen.H.S  <naveenh@kpitcummins.com>

	* config/m32c/muldiv.md (umulhisi3_c): Use only registers for
	dest.
	(umulhisi3_r): Likewise.

2006-07-12  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/27878
	* doc/install.texi (mips-sgi-irix6): Add note about IRIX 6.5.x,
	x < 19, vs wchar_t support.

2006-07-12  Nick Clifton  <nickc@redhat.com>

	* config/sh/sh.h (SUBTARGET_ASM_RELAX_SPEC): Use -isa=sh4-up
	instead of -isa=sh4.

2006-07-12  Mike Stump  <mrs@apple.com>

	* protoize.c (edit_fn_definition): Add volatile to clean_text_p.

2006-07-10  Eric Christopher  <echristo@apple.com>

	* config/t-slibgcc-darwin: Rewrite.

2006-07-10  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	PR bootstrap/20437
	* Makefile.in (configure): add missing aclocal.m4 and acinclude.m4
	dependencies.

2006-07-08  Matthias Klose  <doko@debian.org>

	* doc/sourcebuild.texi: Fix typo.

2006-07-07  Mike Stump  <mrs@apple.com>

	* toplev.c (process_options): Don't give -ffunction-sections may
	affect debugging warning for Mach-O.

2006-07-07  James E Wilson  <wilson@specifix.com>

	* config/mips/mips.md (cpu): Add sb1a.
	* config/mips/sb1.md: Modify almost all patterns to accept sb1a in
	addition to sb1.  Adjust comments to clarify SB-1A differences from
	SB-1.
	(ir_sb1a_load): New.  Modify bypasses to use it.
	(ir_sb1a_simple_alu): Likewise.
	* config/mips/mips.c (mips_cpu_info_table): Add sb1a.
	(mips_rtx_cost_data): Add PROCESSOR_SB1A support.
	(mips_issue_rate): Add PROCESSOR_SB1A.
	(mips_multipass_dfa_lookahead): Use TUNE_SB1 instead of PROCESSOR_SB1.
	* config/mips/mips.h (processor_type): Add PROCESSOR_SB1A.
	(TARGET_SB1): Add PROCESSOR_SB1A check.
	(TUNE_SB1): Likewise.

	* config/mips/mips-protos.h (mips_store_data_bypass_p): New.
	* config/mips/mips.c (mips_store_data_bypass_p): New.
	* config/mips/sb1.md: Use mips_store_data_bypass_p instead of
	store_data_bypass_p.

2006-07-08  Paul Brook  <paul@codesourcery.com>

	PR target/27991
	* config/m68k/m68k.md: Add r-m patterns for 68881 movxf.

2006-07-07   Richard Guenther  <rguenther@suse.de>

	PR middle-end/28268
	* tree.h (build_one_cst): Declare.
	* tree.c (build_one_cst): New function.
	* tree-ssa-math-opts.c (get_constant_one): Remove.
	(insert_reciprocals): Use build_one_cst.
	* fold-const.c (fold_plusminus_mult): Likewise.

2006-07-07  Roger Sayle  <roger@eyesopen.com>

	* pointer-set.c (pointer_set_destroy): Correct whitespace.
	* cfgloopanal.c (dump_graph): Likewise.
	* dojump.c (discard_pending_stack_adjust): Likewise.
	* fix-header.c (TARGET_EXTRA_INCLUDE, TARGET_EXTRA_PRE_INCLUDES):
	Likewise.
	* alloc-pool.c (dump_alloc_pool_statistics): Likewise.
	* function.c (finalize_block_changes): Likewise.
	* gcc-common.c (ggc_free_overhead, dump_gcc_loc_statistics): Likewise.
	* tree-ssa-dce.c (clear_control_dependence_bitmap): Likewise.
	* rtl.c (dump_rtx_statistics): Likewise.
	* tree-ssa-structalias.c (sort_fieldstack, init_alias_heapvars):
	Likewise.
	* varray.c (dump_varray_statistics): Likewise.
	* dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
	decode_decimal64, encode_decimal128, decode_decimal128,
	decimal_real_to_decimal): Likewise.

2006-07-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28187
	* tree-vrp.c (vrp_operand_equal_p): New function.
	(vrp_bitmap_equal_p): Likewise.
	(update_value_range): Use them to compare old and new
	max and min values.

2006-07-06  Roger Sayle  <roger@eyesopen.com>

	* c-parser.c (c_parser_skip_to_end_of_block_or_statement): Add
	a default case to switch statement to silence compiler warnings.

2006-07-06  Roger Sayle  <roger@eyesopen.com>

	PR target/27968
	* configure.ac (HAVE_AS_IX86_FFREEP): On x86 targets check whether
	the configured assembler supports the x87's ffreep mnemonic.
	* configure: Regenerate.
	* config.in: Regenerate.

	* config/i386/i386.c (output_387_ffreep): New function.
	(output_fp_compare): Use output_387_ffreep to emit ffreep insns.
	(output_387_reg_move): Likewise.

2006-07-06  Paul Eggert  <eggert@cs.ucla.edu>

	Port to hosts whose 'sort' and 'tail' implementations
	treat operands with leading '+' as file names, as POSIX
	has required since 2001.  However, make sure the code still
	works on pre-POSIX hosts.
	* Makefile.in (slowcompare): Port to POSIX 1003.1-2001,
	which says you should use "tail -c +N" rather than "tail +Nc".
	Fix a bug: the old code incorrectly skipped 15 bytes, not 16.

2006-07-06  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (scev_probably_wraps_p): Fix typo in
	argument name.

2006-07-06  David Edelsohn  <edelsohn@gnu.org>

	PR target/28150
	* config/rs6000/rs6000.c (rs6000_legitimate_address): Do not allow
	PRE_{INC,DEC} of TFmode.

2006-07-06  David Edelsohn  <edelsohn@gnu.org>
	    Alan Modra  <amodra@bigpond.net.au>

	PR target/28170
	* config/rs6000/rs6000.c (insvdi_rshift_rlwimi_p): Correct shiftop
	bounds. Simplify.

2006-07-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR target/28285
	* config/alpha/predicates.md (alpha_swapped_comparison_operator):
	Remove duplicate gtu.

2006-07-05  Jason Merrill  <jason@redhat.com>

	PR c++/13983
	PR c++/17519
	* stor-layout.c (finish_record_layout): Copy TYPE_PACKED to variants.
	* c-common.c (handle_packed_attribute): So don't copy it here.
	* c-decl.c (finish_struct): Don't copy TYPE_ALIGN.

2006-07-05  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (Invoking G++): Clarify prose for g++.

2006-07-05  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/26146
	* config.gcc: Check with_cpu for i[34567]86--*-solaris2.1[0-9]*.

2006-07-05  Richard Guenther  <rguenther@suse.de>

	PR target/28158
	* config/i386/i386.md (*negdf2_1): Restrict pattern to
	TARGET_SSE2 targets if using SSE math.
	(*absdf2_1): Likewise.

2006-07-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/28162
	* fold-const.c (fold_binary): For (-A) * (-B) -> A * B
	make sure to convert the operands to the correct type.

2006-07-04  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/28218

	* tree-ssa-math-opts.c (execute_cse_reciprocals): Fix calls
	to calculate and free the dominator information.

2006-07-04  Peter O'Gorman  <peter@pogma.com>

	* mklibgcc.in: chmod 644 before ranlib during install.

2006-07-04  Andrew Stubbs <andrew.stubbs@st.com>
	    J"orn Rennecke <joern.rennecke@st.com>

	* configure.ac (.eh_frame data check): Use diff -b.

2006-07-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR bootstrap/18058
	* Makefile.in (BUILD_RTL): Add build/vec.o.
	(build/gencondmd.o): Filter out -fkeep-inline-functions.
	(build/genextract): Delete.
	(build/genautomata): Likewise.

2006-07-04  Alan Modra  <amodra@bigpond.net.au>

	PR target/28207
	* config/rs6000/rs6000.c (function_arg_boundary): Double-word align
	128-bit IBM long doubles for ABI_V4.

2006-07-03  Eric Botcazou  <ebotcazou@adacore.com>

	* tree.c (range_in_array_bounds_p): New predicate.
	* tree.h (range_in_array_bounds_p): Declare it.
	* tree-eh.c (tree_could_trap_p) <ARRAY_RANGE_REF>: Use it to
	return a less conservative answer.
	* tree-sra.c (struct sra_elt): Add new pointer field 'groups'
	and flag 'is_group'.
	(IS_ELEMENT_FOR_GROUP): New macro.
	(FOR_EACH_ACTUAL_CHILD): Likewise.
	(next_child_for_group): New helper function.
	(can_completely_scalarize_p): Take into account groups.
	(sra_hash_tree): Handle RANGE_EXPR.
	(sra_elt_eq): Likewise.
	(lookup_element): Be prepared for handling groups.
	(is_valid_const_index): Delete.
	(maybe_lookup_element_for_expr) <ARRAY_REF>: Use in_array_bounds_p
	instead of is_valid_const_index.
	<ARRAY_RANGE_REF>: New case.
	(sra_walk_expr) <ARRAY_REF>: Use in_array_bounds_p instead of
	is_valid_const_index.
	<ARRAY_RANGE_REF>: Do not unconditionally punt.
	(scan_dump): Dump info for groups too.
	(decide_instantiation_1): Likewise.
	(decide_block_copy): Assert that the element is not a group.
	Propagate decision to groups.
	(generate_one_element_ref): Handle RANGE_EXPR.
	(mark_no_warning): Iterate over actual childs.
	(generate_copy_inout): Likewise.
	(generate_element_copy): Likewise.
	(generate_element_zero): Likewise.
	(generate_element_init_1): Likewise.
	(dump_sra_elt_name): Handle RANGE_EXPR.

2006-07-03  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/26251
	* tree-ssa-threadupdate.c (redirection_block_p): New function.
	(thread_block): When optimizing for size refuse to thread jumps
	that would require duplication of blocks other than redirection
	blocks.

2006-07-03  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Fix thinko in previous check-in.
	* configure: Regenerate.

2006-07-03  Paolo Bonzini  <bonzini@gnu.org>

	PR other/27063
	* configure.ac (for lang...): Simplify nesting of conditionals.
	Test subdir_requires for non-enabled languages.  Move processing
	of lang_opt_files and lang_tree_fiels below that test.
	* configure: Regenerate.
	* doc/sourcebuild.texi (Front End Config): Document subdir_requires.

2006-07-01  Martin Michlmayr  <tbm@cyrius.com>

	* doc/gcov.texi (Invoking Gcov): Add a missing word.

2006-06-30  Kazu Hirata  <kazu@codesourcery.com>

	* cfgexpand.c, config/i386/i386.c, genpreds.c, tree-cfg.c: Fix
	comment typos.

2006-06-29  Jason Merrill  <jason@redhat.com>

	PR c++/26905
	PR c++/26612
	PR c++/27000
	PR c++/26984
	PR c++/19134
	* tree.c (build_decl_stat): Don't hande #pragma visibility here.
	* c-common.c (c_determine_visibility): Handle it here.
	* c-decl.c (finish_decl): Call c_determine_visibility for
	functions, too.
	* flags.h (enum symbol_visibility): Sort from most to least visibility.
	* tree.h: Likewise.
	* varasm.c (default_assemble_visibility): Likewise.
	* c-common.c (handle_visibility_attribute): Complain about trying
	to give visibility to an already defined class, or trying to change
	declared visibility. Always attach the attribute.

	PR c++/26905
	PR c++/21675
	PR c++/17470
	* attribs.c (decl_attributes): Ignore type-in-place attributes
	once the type has been defined.

2006-06-29  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/27428
	* c-lex.c (c_lex_with_flags) <CPP_N_INVALID>: Increment errorcount
	to indicate the cpplib has issued an error message for us.

2006-06-29  Asher Langton  <langton2@llnl.gov>

	PR target/25765
	* config/i386/i386.c (ix86_output_function_epilogue): Don't
	insert a label at the end of an function under Mach-O.

2006-06-29  Eric Christopher  <echristo@apple.com>
	    Evan Cheng  <evan.cheng@apple.com>

	* predicates.md (vector_all_ones_operand): New.
	(nonimmediate_or_sse_const_operand): Ditto.
	* config/i386/i386-protos.h (standard_sse_constant_opcode): Declare.
	* config/i386/i386.c (standard_sse_constant_opcode): Define.
	(standard_sse_mode_p): Ditto.
	(standard_sse_constant_p): Add case for -1 vector.
	(ix86_expand_vector_move): Try to use.
	* sse.md (*mov<mode>_internal): Use nonimmediate_or_sse_const_operand.
	Call standard_sse_constant_opcode.
	(*movv4sf_internal): Ditto.
	(*movv2df_internal): Ditto.

2006-06-29  Roger Sayle  <roger@eyesopen.com>

	* genpreds.c (write_match_code_switch): Correctly use XSTR instead
	of XEXP to extract the operands of a MATCH_CODE rtx.

2006-06-28  Andrew Pinski  <pinskia@gmail.com>

	* tree.c (tree_size): Do not waste tail padding in
	struct tree_string and make the size be the same as
	build_string will generate.

2006-06-28  Jason Merrill  <jason@redhat.com>

	PR c++/27768
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
	may_aliases already in the tag's annotations to the bitmap.

2006-06-28  Roger Sayle  <roger@eyesopen.com>

	* genpreds.c (write_predicate_stmts) <IOR>: Add missing break.

2006-06-28  Roger Sayle  <roger@eyesopen.com>

	* genpreds.c (generate_switch_p): New function.
	(add_mode_tests): Push the new mode test down inside an AND expr
	if this allows the switch-suitable MATCH_CODE to be near the root.
	(write_match_code_switch): New function to write a MATCH_CODE as
	a switch statement.
	(write_predicate_stmts): New function to write a predicate RTX
	expression as a sequence of statements.
	(write_one_predicate_function): Use write_predicate_stmts.
	(write_tm_constrs_h): Likewise.

2006-06-26  Fred Fish  <fnf@specifix.com>

	* config/mips/t-sb1: New file.
	* config.gcc (mipsisa64sb1-*-elf*): Add mips/t-sb1 to
	tmake_file list.

2006-06-26  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_print_operand): Fix sign-merging logic.

2006-06-26  Naveen H.S  <naveenh@kpitcummins.com>
	    Jayant Sonar  <jayants@kpitcummins.com>
	    Jaydeep Vipradas  <jaydeepv@kpitcummins.com>

	* config/m32c/addsub.md (addsi3, addsi3_1, addsi3_2): New.
	(subsi3, subsi3_1, subsi3_2): New.
	* config/m32c/bitops.md (andsi3, iorsi3, xorsi3): New.
	* config/m32c/mov.md (SI mov peephole): New.
	* config/m32c/m32.c (m32c_immd_dbl_mov): New.
	* config/m32c/m32c-protos.h (m32c_immd_dbl_mov): New.

2006-06-26  Olivier Hainque  <hainque@adacore.com>

	* function.c (aggregate_value_p): Honor DECL_BY_REFERENCE on
	a CALL_EXPR target function declaration.

2006-06-26  Richard Guenther  <rguenther@suse.de>

	* tree.c (build_string): Do not waste tail padding in
	struct tree_string.

2006-06-26  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (init_ggc): Add missing element to size_lookup
	table.

	Revert
	2006-06-23  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (init_ggc): Do not round up the extra_order_size_table
	sizes to MAX_ALIGNMENT.  Fix the size_lookup table to honour
	alignment requests instead.  Add verification code.
	Add struct tree_function_decl and struct tree_binfo size to
	extra_order_size_table.  Add missing element to size_lookup
	table.

2006-06-25  Eric Botcazou  <ebotcazou@adacore.com>

	PR middle-end/28151
	* fold-const.c (const_binop): Be prepared for self returning zero.
	Simplify code handling complex values.

2006-06-24  Olivier Hainque  <hainque@adacore.com>

	* gimplify.c (gimplify_scalar_mode_aggregate_compare): New function.
	(gimplify_expr): Use it for tcc_comparison of operands of non BLKmode
	aggregate types.

2006-06-24  Olivier Hainque  <hainque@adacore.com>

	* tree-ssa-loop-im.c (for_each_index): Handle ARRAY_RANGE_REF as
	ARRAY_REF, so have the callback called for the low bound expression.

2006-06-23  Janis Johnson  <janis187@us.ibm.com>

	* tree.h (DECIMAL_FLOAT_TYPE_P): New.
	* c-typeck.c (c_common_type): Disallow operations on decimal float
	types and other float types.
	* convert.c (convert_to_real): Don't ignore conversions involving
	decimal float types.

2006-06-23  Olivier Hainque  <hainque@adacore.com>

	* tree.c (max_int_size_in_bytes): New function, inspired from
	code in function.c:assign_temp.
	* tree.h (max_int_size_in_bytes): Declare.
	* function.c (assign_temp): Use it.
	* gimplify.c (create_tmp_var): Relax the assertions on the type
	properties, not mandating constant size any more.
	(force_constant_size): New static function.
	(gimple_add_tmp_var): Use it, forcing variable size to a
	constant upper bound if it is not constant on entry.

2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>

	PR target/27789
	* config/i386/winnt.c (ix86_handle_selectany_attribute): Move check
	for initialization and setting of one_only flag to ...
	(i386_pe_encode_section_info): ...here.
	(i386_pe_dllimport_p): Check for DECL_DLLIMPORT_P also.
	Recheck that the symbol has not been defined.

2006-06-23  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (init_ggc): Do not round up the extra_order_size_table
	sizes to MAX_ALIGNMENT.  Fix the size_lookup table to honour
	alignment requests instead.  Add verification code.
	Add struct tree_function_decl and struct tree_binfo size to
	extra_order_size_table.  Add missing element to size_lookup
	table.

2006-06-22  Roger Sayle  <roger@eyesopen.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/28131
	* expr.c (expand_expr_real_1) <VECTOR_CST>: Check whether the
	call to lang_hooks.types.type_for_mode returned NULL_TREE.

2006-06-23  Ben Elliston  <bje@au.ibm.com>

	* dfp.c (decimal_to_decnumber): Do not use decNumberNegate to
	negate dn -- manipulate it directly.

2006-06-22  Roger Sayle  <roger@eyesopen.com>
	    Steven Bosscher  <stevenb.gcc@gmail.com>

	PR target/27531
	* reload1.c (gen_reload): Call mark_jump_label on the new insns
	generated by gen_move_insn to add REG_LABEL notes if necessary.

2006-06-22  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm (MIN_ESA): Delete.
	(leaf_entry): Remove use of MIN_ESA.

2006-06-22  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/28121
	* cfgexpand.c (tree_expand_cfg): Clean EDGE_EXECUTABLE flag from
	the entry edge.

2006-06-21  DJ Delorie  <dj@redhat.com>

	* config/m32c/muldiv.md (mulhisi3_i): Only use registers for dest
	(TN-16C-A156A/E).
	(mulhisi3_r): Likewise.

2006-06-21  Richard Sandiford  <richard@codesourcery.com>

	PR middle-end/28034
	* coverage.c (coverage_counter_alloc): Leave the index type
	unspecified.
	(coverage_counter_alloc): Use null arguments for operands 2 and 3
	of the ARRAY_REF.

2006-06-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* doc/invoke.texi (-fopenmp) Move to "Options Controlling C Dialect"
	section from the "Options for Code Generation Conventions".

2006-06-21  Richard Henderson  <rth@redhat.com>

	PR target/26347
	PR target/27082
	* config/alpha/predicates.md (small_symbolic_operand): Deny weak
	symbols.
	(global_symbolic_operand): Allow weak symbols, even if local_p.

2006-06-21  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): New function.
	(find_interesting_uses_address): Punt if above function returns true.

2006-06-21  Richard Guenther  <rguenther@suse.de>

	* configure: Regenerated.

2006-06-21  Joseph Myers  <joseph@codesourcery.com>

	* config/mips/mips.c (function_arg): Where one part of a
	complex argument is in registers and the other part in the stack,
	return a REG not a PARALLEL.

2006-06-21  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Set gcc_gxx_include_dir to $target/include/c++
	when cross-compiling.  Do not substitute libstdcxx_incdir.
	* configure: Regenerated.

2006-06-21  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (mergeable_string_section): Check for embedded NULs and
	NUL termination in the first int_size_in_bytes (TREE_TYPE (decl))
	rather than TREE_STRING_LENGTH bytes.

2006-06-21  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (extra_order_size_table): Add var_ann_d,
	tree_ssa_name, bitmap_element and phi_node with 4 arguments
	sizes.

2006-06-21  Richrad Guenther  <rguenther@suse.de>

	* tree-ssa-loop-niter.c (simplify_using_initial_conditions):
	Limit iteration over the dominators.

2006-06-20  Roger Sayle  <roger@eyesopen.com>

	* config/mips/iris6.h (LIB_SPEC): Add support for -pthread.
	(SUBTARGET_CPP_SPEC): Define _REENTERANT if -pthread specified.

2006-06-20  Richard Guenther  <rguenther@suse.de>
	Michael Matz  <matz@suse.de>

	* alloc-pool.h (free_alloc_pool_if_empty): Prototype new
	function.
	* alloc-pool.c (free_alloc_pool_if_empty): New function.
	* et-forest.h (et_free_pools): Prototype new function.
	* et-forest.c (et_free_tree_force): Free parent occurrence.
	(et_free_pools): New function.
	* dominance.c (free_dominance_info): Free et-forest alloc
	pools.

2006-06-20  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_expr_real_1) <VECTOR_CST>: For vector constants with
	integer modes, attempt to directly construct an integer constant.

	* fold-const.c (native_encode_vector): Determine the size of each
	element from the vector type instead of the first vector element.

	* tree.c (build_constructor_single): Mark a CONSTRUCTOR as constant,
	if all of its elements/components are constant.
	(build_constructor_from_list): Likewise.

2006-06-20  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27331
	* tree-data-ref.c (free_data_ref): New function.
	(create_data_ref): Fail if the data reference has unknown access
	function.
	(free_data_refs): Use free_data_ref.

2006-06-19  Andrew Pinski  <pinskia@gmail.com>

	PR middle-end/28075
	* tree-inline.c (setup_one_parameter): Strip useless
	type conversion before adding it to the IR.
	(declare_return_variable): Likewise.

2006-06-19  Martin Michlmayr  <tbm@cyrius.com>

	PR c/27149
	* c-common.c (c_common_truthvalue_conversion): Fix grammar in warning.

2006-06-19  Mike Stump  <mrs@apple.com>

	* tree.c (variably_modified_type_p): VM arguments don't make the
	type a VM type.

2006-06-19  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (try_combine_conversion): Strip useless
	type conversions after folding.

2006-06-19  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (extra_order_size_tab): Add entries with
	size of struct function and basic_block.
	(size_lookup): Extend to cover sizes up to 511.
	(ggc_alloc_stat): Adjust user.
	(ggc_pch_count_object): Likewise.
	(ggc_pch_alloc_object): Likewise.
	(ggc_pch_write_object): Likewise.

2006-06-19  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (implies_ge_p): New function.
	(derive_constant_upper_bound): Handle OP0 - CST in unsigned types
	correctly.

2006-06-19  Denis Chertykov  <denisc@overta.ru>

	* config/avr/libgcc.S : Correct my wrong previous commit.

2006-06-19  Roger Sayle  <roger@eyesopen.com>

	PR target/27861
	* expmed.c (expand_shift): On SHIFT_COUNT_TRUNCATED targets, we may
	have stripped a SUBREG from the shift count, so we may need to
	convert_to_mode back to the type's mode before calling make_tree.
	Use new_amount instead of amount to avoid expanding a tree twice.

2006-06-19  Richard Guenther  <rguenther@suse.de>

	PR middle-end/28045
	* fold-const.c (operand_equal_p): Check if the argument types
	have the same precision before stripping NOPs.

2006-06-19  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/27341
	* tree-cfg.c (gimplify_val): Call mark_new_vars_to_rename on the
	statement we get.
	* tree-complex.c (pass_lower_complex): Update SMT usage.

2006-06-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("doloop_si64", "doloop_si31", "doloop_di"):
	Add a new alternative to the constraint strings. Add move of
	operand 1 to 3 to the splitter definition.
	("doloop_si_long"): Second contraint alternative removed.

2006-06-08  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.h (avr_have_movw_lpmx_p): Declare.
	(TARGET_CPU_CPP_BUILTINS): Add __AVR_HAVE_MOVW__ and
	__AVR_HAVE_LPMX__.
	(AVR_HAVE_MOVW) Define.
	(ASSEMBLER_DIALECT): Use AVR_HAVE_MOVW.
	(ASM_SPEC): Add avr25.
	(LINK_SPEC): Add avr25.
	* config/avr/avr.c (avr_have_movw_lpmx_p): Add.
	(base_arch_s): Add new member 'have_movw_lpmx'.
	(avr_arch_types): Init 'have_movw_lpmx'.
	(avr_mcu_types): Add 'avr25'. Move attiny13, attiny2313, attiny24,
	attiny44, attiny84, attiny25, attiny45, attiny85, attiny261,
	attiny461, attiny861 and at86rf401 in 'avr25' arhitecture.
	(avr_override_options): Init 'avr_have_movw_lpmx_p'.
	(output_movhi, output_movsisf, ashlsi3_out, avr_rtx_costs): Use
	AVR_HAVE_MOVW.
	(avr_file_start): Do not output '.arh' derective.
	* config/avr/libgcc.S (mov_l): Use __AVR_HAVE_MOVW__.
	(__do_copy_data): Use __AVR_HAVE_LPMX__.
	* config/avr/avr.md (mcu_enhanced): Delete.
	(mcu_have_movw): Define.
	(negsi2, extendhisi2, zero_extendhisi2): Use 'mcu_have_movw'.
	(call_insn, call_value_insn): Use 'call_insn' and __AVR_HAVE_MOVW__.
	* config/avr/t-avr(MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add avr25.
	(MULTILIB_MATCHES): Add attiny13, attiny2313, attiny24, attiny44,
	attiny84, attiny25, attiny45, attiny85, attiny261, attiny461,
	attiny861 and at86rf401 devices.

2006-06-18  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.c (MAX_LOOP_LENGTH): Define to be 2042 instead
	of 4096.

2006-06-17  Karl Berry  <karl@gnu.org>

	* doc/cpp.texi, doc/cppinternals.texi, doc/gcc.texi,
	doc/gccint.texi, doc/install.texi (@dircategory): Use
	"Software development" instead of "Programming", following
	the Free Software Directory.

2006-06-17  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.c (legitimate_tls_address)
	<TARGET_GNU2_TLS>: Add tp after DTPOFF.
	* config/i386/i386.md (*tls_dynamic_gnu2_combine_32): Adjust.
	(*tls_dynamic_gnu2_combine_64): Likewise.

2006-06-16  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27116
	* fold-const.c (negate_expr_p): Do not introduce undefined
	overflow in negating INTEGER_CSTs.
	(fold_negate_expr): Rename from negate_expr.  Revert last
	change for folding BIT_NOT_EXPR.  Change semantics to
	return NULL_TREE for non-simplified negations.  Do not
	strip type conversions and unify type handling.
	(negate_expr): New function, wrap around fold_negate_expr
	but ensure building a tree always.  Strip type conversions
	here, fold to result type.
	(fold_unary): Use fold_negate_expr for folding NEGATE_EXPR.

2006-06-16  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/27802
	* reg-stack.c (subst_stack_regs): Handle noreturn function calls
	that (would) return their results in stack registers.

2006-06-16  Michael Matz  <matz@suse.de>
	Richard Guenther  <rguenther@suse.de>

	* fold-const.c (fold_truthop): Only return new tree node if
	we canonicalized something.

2006-06-16  Richard Guenther  <rguenther@suse.de>

	* function.h (enum function_frequency): Move declaration
	out of struct function.
	(struct function): Move bool fields and the enum to the bitfield
	section.  Reorder elements to avoid padding.  Remove unused
	fields left over from the RTL inliner removal.
	* function.c (free_after_compilation): Do not zero removed fields.
	* Makefile.in (ipa-reference.o): Add $(FUNCTION_H) dependency.
	(ipa-type-escape.o): Likewise.

2006-06-16  Richard Guenther  <rguenther@suse.de>

	* cgraph.h (struct cgraph_local_info): Turn bool elements
	into a bitfield.
	(struct cgraph_node): Likewise.
	(struct cgraph_varpool_node): Likewise.

2006-06-15  Richard Guenther  <rguenther@suse.de>

	* fold-const.c (fold_truth_not_expr): Rename from
	invert_truthvalue.  Give it fold_* semantics to avoid
	generating garbage.
	(invert_truthvalue): New function.  Wrapper around
	fold_truth_not_expr.
	(optimize_minmax_comparison): Avoid creating garbage.
	(fold_unary): Use fold_truth_not_expr for folding
	TRUTH_NOT_EXPR.
	(fold_ternary): Replace uses of invert_truthvalue with
	fold_truth_not_expr where applicable.
	* tree.h (fold_truth_not_expr): Prototype.

2006-06-16  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27781
	* Makefile.in (ipa-pure-const.o): Add $(TARGET_H) dependency.
	* ipa-pure-const.c (target.h): Include.
	(analyze_function): Do not analyze functions that do not
	bind locally.

2006-06-15  Andrew MacLeod  <amacleod@redhat.com>

	PR middle-end/27793
	* tree-dfa.c (referenced_vars_dup_list): Remove.
	(find_referenced_vars): Remove assert.
	(referenced_var_check_and_insert): Replace dup list with assert.
	* tree-ssa.c (delete_tree_ssa): Remove dup list processing.
	* tree-flow.h (referenced_vars_dup_list): Remove extern decl.

2006-06-15  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (alias_get_name): Avoid creating
	extra unused identifiers if not dumping.
	(create_variable_info_for): Likewise.

2006-06-15  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (implies_nonnegative_p): New function.
	(derive_constant_upper_bound): Derive more precise upper bound in
	common cases.  Return type changed to double_int.
	(record_estimate): Reflect the changed return type of
	derive_constant_upper_bound.
	* double-int.c (double_int_zext, double_int_sext): Fix.

2006-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac (CFLAGS): Get them from the toplevel or from the
	configure invocation.
	* configure: Regenerate.
	* Makefile.in (CFLAGS): Substitute value provided by configure.

2006-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26559
	* c-common.h (c_finish_omp_atomic): Adjust declaration.
	* c-omp.c (c_finish_omp_atomic): Return the expression to perform,
	rather than calling add_stmt on it.
	* c-parser.c (c_parser_omp_atomic): Adjust accordingly.

2006-06-14  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR middle-end/27959
	* reload1.c (reload): Remove registers returned by update_eliminables
	from used_spill_regs.

2006-06-13  DJ Delorie  <dj@redhat.com>

	* config/m32c/muldiv.md (mulpsi3): Expect arbitrary constants.

2006-06-13  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Define HTMLS_BUILD, HTMLS_INSTALL,
	html__strip_dir, html__mkdir_p. Enhance install-html target.
	* configure.ac: AC_SUBST datarootdir, docdir and htmldir.
	* configure: Regenerate.

2006-06-13  Fariborz Jahanian <fjahanian@apple.com>

	* fold-const.c (fold_cond_expr_with_comparison): Check for
	Objective-C++ as language in deciding COND_EXPR transformation.

2006-06-06  J"orn Rennecke <joern.rennecke@st.com>

	PR target/28014:
	* config/sh/t-sh (LIB1ASMFUNCS): Add _udiv_qrnnd16
	* config/sh/sh.c (print_operand): Add !SHMEDIA functionality to 'M'.
	* config/sh/lib1funcs.h (SL, SL1): Define.
	* config/sh/lib1funcs.asm (__udiv_qrnnd16): New hidden function.
	* longlong.h (__sh__): Define umul_ppmm, udiv_qrnnd and sub_ddmmss.
	* config/sh/t-sh ($(T)unwind-dw2-Os-4-200.o): New rule.
	(OBJS_Os_4_200): New variable.
	($(T)libgcc-Os-4-200.a): Use it.
	* sh.md (udivsi3): For TARGET_DIVIDE_CALL_TABLE, avoid function call
	when dividing 1 and/or by 0.

2006-06-13  Roger Sayle  <roger@eyesopen.com>

	* configure.ac (HAS_MCONTEXT_T_UNDERSCORES): Include <sys/signal.h>
	before <ucontext.h> to define sigset_t required by <sys/ucontext.h>.
	* configure: Regenerate.

2006-06-13  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.c (bfin_reorg_loops): Only call recog_memoized ()
	for real instruction.

2006-06-13  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR middle-end/26807
	* haifa-sched.c (check_cfg): Handle special case.

2006-06-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR debug/26754
	* gimplify.c (declare_tmp_vars): Rename into declare_vars.
	Add debug_info parameter.  Chain the vars to the BLOCK instead
	of the BIND_EXPR if debug info are requested for them.
	(pop_gimplify_context): Adjust for above change.
	(gimple_add_tmp_var): Likewise.
	* tree-gimple.h (declare_tmp_vars): Rename into declare_vars.
	Add bool parameter.
	* tree-nested.c (convert_nonlocal_reference): Adjust for above change.
	(convert_local_reference): Likewise.
	(get_local_debug_decl): Set DECL_IGNORED_P on the original variable.
	(finalize_nesting_tree_1): Request that debug info be emitted
	for debug_var_chain.

2006-06-13  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (unlink_other_notes, unlink_line_notes): Fix the patch
	for PR target/27863.

2006-06-13  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27536
	* except.c (output_ttype): Expand type with EXPAND_INITIALIZER.

2006-06-13  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27830
	* tree-inline.c (copy_body_r): For copying the operand
	of an ADDR_EXPR make sure to fold &* afterwards.

2006-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gimplify.c (gimplify_expr): Treat VIEW_CONVERT_EXPR like other
	lvalues in the fb_none case with side-effects.

2006-06-12  Kazu Hirata  <kazu@codesourcery.com>

	* tree-flow.h: Remove the prototype for
	compute_phi_arg_on_exit.
	* tree-ssa-loop-ivopts.c (protect_loop_closed_ssa_form_use,
	protect_loop_closed_ssa_form, compute_phi_arg_on_exit):
	Remove.

2006-06-12  Mark Shinwell  <shinwell@codesourcery.com>

	* builtins.c (expand_builtin_return_addr): Only use
	frame_pointer_rtx when count == 0 and we are expanding
	__builtin_return_address.

2006-06-12  Fred Fish  <fnf@specifix.com>

	* config/mips/mips.c (mips_file_start): Create special section
	".gcc_compiled_longXX" for o64 ABI as well as EABI.

2006-06-11  Eric Christopher  <echristo@apple.com>

	PR middle-end/27948
	* stor-layout.c (place_field): Remove check for
	remaining_in_alignment when aligning at the end of a run.

2006-06-11  Eric Christopher  <echristo@apple.com>

	PR 27542
	* doc/extend.texi (Structure-Packing Pragmas): Document ms_struct
	pragma.

2006-06-11  Roger Sayle  <roger@eyesopen.com>

	PR target/27858
	Revert incorrect fix for PR target/27158
	2006-05-08  Roger Sayle  <roger@eyesopen.com>
	* reload.c (find_reloads_toplev): Only return the simplified SUBREG
	of a reg_equiv_constant if the result is a legitimate constant.

2006-06-11  Roger Sayle  <roger@eyesopen.com>

	PR target/27158
	* config/rs6000/rs6000.c (const_vector_elt_as_int): New function to
	extract a CONST_VECTOR element and interpret it as an integer.
	(vspltis_constant): Use const_vector_elt_as_int instead of the
	macro CONST_VECTOR_ELT in order to handle FP vector modes.
	* config/rs6000/predicates.md (easy_vector_const): Consider
	floating point ALTIVEC_VECTOR_MODEs via easy_altivec_constant.

2006-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR middle-end/27942
	* stor-layout.c (update_alignment_for_field): Don't add extra
	alignment for packed non-bitfield fields in ms_bitfield_layout_p
	code.

2006-06-09  Ralf Corsepius  <ralf.corsepius@rtems.org>

	* config/mips/t-rtems: Add EL/EB multilib variants.

2006-06-09  Mike Stump  <mrs@apple.com>

	* c-typeck.c (c_begin_vm_scope): Fix file_scope processing.

2006-06-09  David Daney  <ddaney@avtrex.com>

	* doc/install.texi: Add binutils version recommendation for mips-*-*.

2006-06-09  Andreas Krebbel  <krebbel1@de.ibm.com>

	* reload.c (find_reloads): Unset force_reload for 'X' constraint.

2006-06-09  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26998
	* tree-vrp.c (extract_range_from_unary_expr): For NEGATE_EXPR
	of signed types, only TYPE_MIN_VALUE is special, but for both,
	minimum and maximum value.  Likewise VR_ANTI_RANGE is special
	in this case, as is -fwrapv.

2006-06-08  Mike Stump  <mrs@apple.com>

	PR target/26427
	* config/darwin.c (darwin_asm_output_anchor): Disable
	-fsection-anchors on darwin for now.
	* config/darwin.h (TARGET_ASM_OUTPUT_ANCHOR): Likewise.
	* rs6000/rs6000.c (optimization_options): Likewise.

2006-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR target/27421
	* config/i386/i386.c (classify_argument): Skip fields with invalid
	types in unions.

2006-06-08  Steven Bosscher  <steven@gcc.gnu.org>

	* cse.c (flush_hash_table): Use VOIDmode to invalidate a REG.
	(cse_insn): Likewise for the stack_pointer_rtx.

2006-06-08  Roger Sayle  <roger@eyesopen.com>

	* tree-ssa-dom.c (record_conditions): Only record "unordered"
	conditions from floating point comparisons.

2006-06-08  Paolo Bonzini  <bonzini@gnu.org>

	PR middle-end/27733
	* expmed.c (struct alg_hash_entry): Fix type of field T
	to match synth_mult argument.
	(NUM_ALG_HASH_ENTRIES): Make it bigger for 64-bit HOST_WIDE_INT.

2006-06-08  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR target/27863
	* haifa-sched.c (unlink_other_notes, unlink_line_notes): Update basic
	block boundaries.

2006-06-08  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27116
	* fold-const.c (negate_expr_p): We can negate BIT_NOT_EXPR
	only, if overflow is defined and not trapping.
	(negate_expr): Likewise.

2006-06-07  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27872
	* tree-ssa-loop-manip.c (tree_unroll_loop): Set EDGE_IRREDUCIBLE_LOOP
	flag on the new exit edge of the unrolled loop.

2006-06-07  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26449
	* loop-invariant.c (move_invariant_reg): Fail if force_operand fails.

2006-06-07  Andrew MacLeod  <amacleod@redhat.com>

	PR middle-end/27793
	* tree-dfa.c (referenced_vars_dup_list): New.  List of duplicate
	referenced_variables with matching DECL_UID's.
	(find_referenced_vars): Make sure duplicate list is empty to start.
	(referenced_var_p): Remove.
	(referenced_var_check_and_insert): Renamed from referenced_var_insert.
	Check if var is in the list, and add if needed.  Update the duplicate
	list if a different var is in the list with the same DECL_UID.
	(add_referenced_var): Call routine to check and insert.
	* tree-ssa.c (delete_tree_ssa): Clear var_ann's on duplicates.
	* tree-flow.h (referenced_vars_dup_list): External declaration.

2006-06-07  Fred Fish  <fnf@specifix.com>

	* config/mips/t-elf (MULTILIB_MATCHES): Combine two entries
	into single entry.

2006-06-07  Paolo Bonzini  <bonzini@gnu.org>

	PR target/27390
	* reg-stack.c (subst_stack_regs_pat): Reorder resetting of
	the imaginary and real parts of a clobbered register.
	Emit insn to set the imaginary part.

2006-06-06  Peter Lemieszewski  <lemie@us.ibm.com>

	* config/s390/t-tpf (LIB2ADDEH): Include unwind-dw2-fde-glibc.c
	in lieu of unwind-dw2-fde.c.

2006-06-06  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	* config/i386/mingw32.h (GOMP_SELF_SPECS): Define.

2006-06-06  Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/27842
	* config/rs6000/altivec.md (UNSPEC_VSLW): Remove.
	("altivec_vspltisw_v4sf", "altivec_vslw_v4sf"): Remove.
	("mulv4sf3", "absv4sf3", "negv4sf3"): Adapt users to use
	V4SImode temporaries and operations instead.

2006-06-06  Joseph S. Myers  <joseph@codesourcery.com>

	* config/mips/t-linux64 (tp-bit.c): Append to tp-bit.c, not
	dp-bit.c.

2006-06-06  Mike Stump  <mrs@apple.com>

	* Makefile.in: Rename to htmldir to build_htmldir to avoid
	installing during build.

2006-06-06  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): Change default
	value to 0.
	* doc/invoke.texi (max-sched-extend-regions-iters): Document.
	* config/ia64/ia64.c (params.h): New header.
	(ia64_optimization_options): New function to adjust parameters.
	* config/ia64/ia64-protos.h (ia64_optimization_options): New prototype.
	* config/ia64/ia64.h (OPTIMIZATION_OPTIONS): New macro.
	* config/ia64/t-ia64 (ia64.o): Add dependence from params.h .

2006-06-05  Kazu Hirata  <kazu@codesourcery.com>

	* stor-layout.c (debug_rli): Fix a typo in a debug message.

2006-06-05  Steve Ellcey  <sje@cup.hp.com>

	PR target/27051
	* config/ia64/ia64.c (ia64_select_rtx_section): Check TARGET_NO_SDATA.

2006-06-05  Dorit Nuzman  <dorit@il.ibm.com>
	    Victor Kaplansky  <victork@il.ibm.com>

	PR tree-optimization/26360
	* tree-vectorizer.c (destroy_loop_vec_info): Remove (dead) pattern
	stmts.

2006-06-04  Roger Sayle  <roger@eyesopen.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/27382
	* c-common.c (c_common_truthvalue_conversion): Explicitly check
	for LABEL_DECL before calling DECL_WEAK.

	PR c/27150
	* c-typeck.c (build_binary_op): Likewise, explicitly check for
	LABEL_DECL and PARM_DECL.

2006-06-05  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/25161
	PR c/27020
	* c-decl.c (grokdeclarator): Disallow variably modified types at
	file scope.  Avoid marking shared array type of constant size as
	VLA.

2006-06-04  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27601
	* c-common.c (fold_offsetof_1): Handle static members.

2006-06-04 Eric Christopher <echristo@apple.com>

	* stor-layout.c (start_record_layout): Initialize remaining_in_alignment.
	(debug_rli): Output value for remaining_in_alignment.
	(update_alignment_for_field): Unconditionalize
	ms_bitfield_layout_p code. Handle non-bitfield fields. Remove
	extra alignment code.
	(place_field): Don't realign if ms_bitfield_layout_p. Unconditionalize
	ms_bitfield_layout_p code. Rewrite handling of structure fields.
	* tree.h (record_layout_info_s): Remove prev_packed.
	* doc/extend.texi (ms_struct): Add documentation of format.

2006-06-04  Mark Shinwell  <shinwell@codesourcery.com>

	* tree.h: Declare folding_initializer.
	* builtins.c (fold_builtin_constant_p): Give definite answer
	if folding inside an initializer.
	* fold-const.c: Define folding_initializer.
	(START_FOLD_INIT): Save and then set folding_initializer.
	(END_FOLD_INIT): Restore folding_initializer.

2006-06-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27039
	* fold-const.c (fold_comparison): Handle pointer comparison
	again for all comparison codes.  Compare offsets in signed
	size type.
	(fold_binary): Move code from here.

2006-06-03  Roger Sayle  <roger@eyesopen.com>

	PR target/26223
	* config/i386/i386.c (construct_container): Split static issued_error
	flag into issued_sse_arg_error, issued_sse_ret_error and
	issued_x87_ret_error.  Issue a daignostic if the x86-64 ABI
	requires the use of x87 registers and the user explicitly
	specified the -mno-80387 command line option.

2006-06-02  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/host-darwin.c (sigaltstack): Protect prototype with
	HAVE_DECL_SIGALTSTACK.
	(MC_FLD): New.
	(segv_handler): Use MC_FLD.
	* configure.ac: Check for a sigaltstack declaration.
	Compute HAS_MCONTEXT_T_UNDERSCORES on Darwin.
	* configure: Regenerate.
	* config.in: Regenerate.

2006-06-03  J"orn Rennecke <joern.rennecke@st.com>

	PR other/27850
	* Makefile.in (stmp-fixinc): Fix typo.

2006-06-02  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_unary) <CONJ_EXPR>: Ensure folded expressions
	are type correct.  Clean-up.
	<REALPART_EXPR>: Likewise.  Optimize creal(~z) as creal(z).
	<IMAGPART_EXPR>: Likewise.  Optimize cimag(~z) as -cimag(z).

2006-06-01  DJ Delorie  <dj@redhat.com>

	* config/v850/v850.h (ASM_OUTPUT_ADDR_DIFF_ELT): Disabled the
	shift, as we've disabled the "switch" insn that needs it.

2006-06-01  Per Bothner  <bothner@bothner.com>

	Suppress extra '#1 <built-in> or '#1 <command line>' on -dD output.
	* c-opts.c (finish_options): Use internal line 0 for <command-line>.
	* c-ppoutput.c (cb_define): Don't increment line 0.

2006-06-01  Pete Steinmetz  <steinmtz@us.ibm.com>

	* doc/invoke.texi: Add cpu_type power6.
	* config.gcc: Add cpu_type power6.
	* config/rs6000/rs6000.c (rs6000_override_options): Alias power6
	to power5+ with Altivec.
	* config/rs6000/aix52.h (ASM_CPU_SPEC): Add power6.
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add power6.

2006-05-30  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.h (SET_ASM_OP): Define.

2006-06-01  Kazu Hirata  <kazu@codesourcery.com>

	* config/bfin/bfin.c: Fix comment typos.

2006-06-01  Paolo Bonzini  <bonzini@gnu.org>

	PR 25453
	* doc/install.texi: Document --enable-bootstrap and
	--disable-bootstrap.

2006-06-01  Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi: Document that InfoZIP can replace jar.

2006-05-31  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_expand_fp_absneg_operator): When SSE
	isn't available, directly generate the simpler x87 patterns without
	the (use (const_int 0)).
	* config/i386/i386.md (*negsf2_1): Enable pre-reload if the SSE
	implementation isn't available.
	(*negdf2_1): Likewise.
	(*negxf2_1): XF mode negation is always done using the x87.
	(*abssf2_1, *absdf2_1, *absxf2_1): Likewise^3 for fabs.

2006-05-31  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_cabs): Delete prototype.  Require an
	additional FNDECL argument.  Optimize cabs(-z) and cabs(~z) as
	cabs(z).
	(fold_builtin_decl) <BUILT_IN_CABS>: Update fold_builtin_cabs call.

2006-05-31  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin-protos.h (bfin_hardware_loop): Declare.
	* config/bfin/bfin.c (basic-block.h): Include.
	(struct machine_function): New.
	(bfin_init_machine_status): New.
	(override_options): Initialize init_machine_status.
	(bfin_hardware_loop): New.
	(MAX_LOOP_DEPTH, MAX_LOOP_LENGTH): Define.
	(DEF_VEC_P (loop_info)): New.
	(DEF_VEC_ALLOC_P (loop_info,heap)): New.
	(struct loop_info): New.
	(loop_info): New typedef.
	(struct loop_work): New.
	(loop_work): New typedef.
	(DEF_VEC_O (loop_work)): New.
	(DEF_VEC_ALLOC_O (loop_work,heap)): New.
	(bfin_dump_loops): New.
	(bfin_bb_in_loop): New.
	(bfin_scan_loop): New.
	(bfin_optimize_loop): New.
	(bfin_reorg_loops): New.
	(bfin_reorg): Use bfin_reorg_loops.
	* config/bfin/bfin.h (FIRST_PSEUDO_REGISTER): Adjust for adding
	loop registers.
	(I_REGNO_P): Simplify.
	(DP_REGNO_P, DPREG_P): New macros.
	(REGISTER_NAMES, FIXED_REGISTERS, CALL_USED_REGISTERS,
	REG_ALLOC_ORDER): Add LT0, LT1, LC0, LC1, LB0, LB1.
	(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS):
	Add LT_REGS, LC_REGS, LB_REGS.
	(REG_CLASS_FROM_LETTER): Add 't' for LT_REGS, 'k' for LC_REGS,
	'l' for LB_REGS.
	(REGNO_REG_CLASS): Deal with loop registers.
	* config/bfin/bfin.md: Add comment for 't', 'k', 'l' constraint
	letters.
	(REG_LT0, REG_LT1, REG_LC0, REG_LC1, REG_LB0, REG_LB1):
	New constants for loop registers.
	(UNSPEC_LSETUP_END): New.
	(seq_insns): New define_attr. Set it for appropriate insns.
	(movsi_insn): Add alternatives for move from/to
	loop count registers.
	(doloop_end): New define_expand.
	(loop_end): New define_insn.
	(define_split for bad doloop_end): New.
	(lsetup_with_autoinit): New define_insn.
	(lsetup_without_autoinit): New define_insn.
	(rep_movsi, rep_movhi): Clobber LT1, LC1, LB1.
	* config/bfin/predicates.md (lc_register_operand): New.
	(lt_register_operand): New.
	(lb_register_operand): New.
	(nondp_register_operand): New.
	(nondp_reg_or_memory_operand): New.
	* doc/md.texi: Document Blackfin new 't', 'k', 'l' constraint letters.

2006-05-31  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.c (bfin_delegitimize_address): New.
	(TARGET_DELEGITIMIZE_ADDRESS): Define.

2006-05-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (CATALOGS): Add po/ prefix.
	* configure: Regenerated.

2006-05-31  Richard Earnshaw  <richard.earnshaw@arm.com>

	PR target/27829
	* arm.c (arm_print_operand case 'S'): Validate that the operand is
	a shift operand before calling shift_op.  Avoid redundant call of
	shift_op.

2006-05-30  Naveen.H.S  <naveenh@kpitcummins.com>
	    DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_expand_insv): Check that the value
	we're inserting is a singlt-bit constant.

2006-05-30  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation_1) <LSHIFTRT>: Cast
	width to HOST_WIDE_INT to avoid comparison warnings on some targets.

2006-05-30  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/23452
	* fold-const.c (fold_mult_zconjz): New subroutine of fold_binary,
	to optimize z * conj(z) as realpart(z)^2 + imagpart(z)^2.
	(fold_binary) <MULT_EXPR>: Call fold_mult_zconjz for integral
	complex values and with -ffast-math for FP complex values.

2006-05-30  Kazu Hirata  <kazu@codesourcery.com>

	* c-common.h: Remove the prototype for yyparse.
	* rtl.h: Remove the prototype for init_loop.

2006-05-30  Andreas Krebbel  <krebbel1@de.ibm.com>

	* cse.c (validate_canon_reg, cse_insn): Don't change insns without
	calling recog.

2006-05-30  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation): Unfactor the shift
	and rotate cases.
	<LSHIFTRT>: Optimize (lshiftrt (clz X) C) as (eq X 0) where C is
	log2(GET_MODE_BITSIZE(X)) on targets with the appropriate semantics.

2006-05-30  Dirk Mueller  <dmueller@suse.de>

	PR c/27273
	* c-common.c (convert_and_check): Only track TREE_CONSTANT_OVERFLOW
	for CONSTANT_CLASS_P expresisons.

2006-05-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/27718
	* c-typeck.c (c_expr_sizeof_type): Handle invalid types.

2006-05-30  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27779
	* tree-data-ref.c (analyze_siv_subscript_cst_affine): Use
	initial_condition instead of CHREC_LEFT.

2006-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>

	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Fix type of begin_label.
	* config/m32r/initfini.c (__do_global_dtors, __do_global_ctors):
	Make prototypes ISO C90.

2006-05-30  Mircea Namolaru  <namolaru@il.ibm.com>
	    Leehod Baruch    <leehod.baruch@weizmann.ac.il>

	* see.c (see_analyze_one_def): Correct check.
	(see_get_extension_data): Check if extension is parallel.
	(see_get_extension_reg): Likewise.

2006-05-30  Uros Bizjak  <uros@kss-loka.si>

	PR target/27790
	* config/i386/i386.c (ix86_expand_int_vcond): Force cop0
	into register for (code == GTU).

2006-05-29  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/24964
	* simplify-rtx.c (simplify_binary_operation_1): Add function comment.
	<MULT>: Minor clean-up.  Don't convert x*-1.0 into -x if we honor
	signaling NaNs.  Optimize -x*-x as x*x for all float modes, and
	abs(x)*abs(x) as x*x for scalar floating point modes.

2006-05-29  Sebastian Pop  <pop@cri.ensmp.fr>

	PR middle-end/27745
	* lambda-code.c (perfect_nestify): Don't copy statements
	in the inner loop: move them to the inner loop header.

2006-05-29  Diego Novillo  <dnovillo@redhat.com>

	PR 26237
	* c-tree.texi: Document OpenMP directives and clauses.

2006-05-29  Kazu Hirata  <kazu@codesourcery.com>

	* varasm.c (globalize_decl): Fix indentation.

2006-05-29  Diego Novillo  <dnovillo@redhat.com>

	PR 26242
	* doc/passes.texi: Add documentation for pass_vrp, pass_ipa_pta,
	pass_fre, pass_store_ccp, pass_copy_prop,
	pass_store_copy_prop, pass_merge_phi, pass_nrv,
	pass_return_slot, pass_object_size, pass_lim,
	pass_linear_transform, pass_empty_loop, pass_complete_unroll,
	pass_loop_prefetch and pass_stdarg.

2006-05-29  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.opt (mfdpic): New option.
	* config/bfin/t-bfin-elf (EXTRA_PARTS): Add crtbeginS.o and crtendS.o.
	(EXTRA_MULTILIB_PARTS): Likewise.
	(CRTSTUFF_T_CFLAGS, TARGET_LIBGCC2_CFLAGS): Use -fpic.
	(MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Build one extra -mfdpic
	multilib.
	* config/bfin/elf.h (STARTFILE_SPEC): Don't link in crt0.o if -shared.
	(CRT_CALL_STATIC_FUNCTION): New.
	* config/bfin/uclinux.h (STARTFILE_SPEC): Don't link in crt0.o if
	-shared.
	(CRT_CALL_STATIC_FUNCTION): New.
	* config/bfin/bfin.c (legitimize_pic_address): Now static.  Handle
	FD-PIC moves.
	(n_pregs_to_save): PIC register doesn't need to be saved with FD-PIC.
	(print_operand): Handle UNSPEC_MOVE_FDPIC and UNSPEC_FUNCDESC_GOT17M4.
	(initialize_trampoline): Changed to handle FD-PIC code generation.
	(expand_move): If TARGET_FDPIC, use emit_pic_move as needed.
	(bfin_expand_call): Generate FD-PIC calls if TARGET_FDPIC.
	(override_options): Disallow -mid-shared-library -mfdpic combination.
	Can't do unaligned ops if FD-PIC.
	Turn off flag_pic if trying to generate non-id-shared-library
	non-fdpic code, since it's not supported.
	(bfin_assemble_integer): New function.
	(TARGET_ASM_INTEGER): Define.
	* config/bfin/crti.s (__init, __fini): Save P3 on the stack if
	__BFIN_FDPIC__.
	* config/bfin/crtn.s: Restore them.
	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __BFIN_FDPIC__
	if TARGET_FDPIC.
	(DRIVER_SELF_SPECS, SUBTARGET_DRIVER_SELF_SPECS,
	LINK_GCC_C_SEQUENCE_SPEC, ASM_SPEC, LINK_SPEC): New macros.
	(FDPIC_FPTR_REGNO, FDPIC_REGNO, OUR_FDPIC_REG): New macros.
	(TRAMPOLINE_SIZE, TRAMPOLINE_TEMPLATE): Adjust for FD-PIC.
	(CONDITIONAL_REGISTER_USAGE): If TARGET_FDPIC, FDPIC_REGNO is
	call-used.
	(enum reg_class, REG_CLASS_CONTENTS, REG_CLASS_NAMES): Add
	FDPIC_REGS and FDPIC_FPTR_REGS.
	(REG_CLASS_FROM_LETTER): Use 'Z' and 'Y' for them.
	* config/bfin/bfin.md (UNSPEC_MOVE_FDPIC, UNSPEC_FUNCDESC_GOT17M4,
	UNSPEC_VOLATILE_LOAD_FUNCDESC): New constants.
	(load_funcdescsi): New pattern.
	(call_symbol_fdpic, sibcall_symbol_fdpic, call_value_symbol_fdpic,
	sibcall_value_symbol_fdpic, call_insn_fdpic, sibcall_insn_fdpic,
	call_value_insn_fdpic, sibcall_value_insn_fdpic): New patterns.

2006-05-29  Kazu Hirata  <kazu@codesourcery.com>

	* gcse.c, rtlanal.c: Remove obsolete comments associated with
	loop.c.

	* config/bfin/bfin.h (PARM_BOUNDRY, STACK_BOUNDRY): Remove.

	* tree-flow.h: Remove the prototype for add_type_alias.
	* tree-ssa-alias.c (add_type_alias): Remove.

2006-05-28  Kazu Hirata  <kazu@codesourcery.com>

	* cfgcleanup.c, cfgexpand.c, cgraphunit.c, config/arm/arm.c,
	config/fr30/fr30.md, config/i386/i386-interix.h,
	config/i386/i386.c, config/i386/i386.md, config/sh/superh.h,
	config/sh/superh64.h, config/v850/v850.c, df-core.c,
	df-problems.c, df.h, except.c, final.c, haifa-sched.c,
	lambda-code.c, libgcc2.h, omp-low.c, optabs.c, predict.c,
	reload.c, tree-flow.h, tree-outof-ssa.c, tree-ssa-dce.c,
	tree-ssa-pre.c, tree-vect-transform.c: Fix comment typos.
	Follow spelling conventions.
	* doc/invoke.texi, doc/rtl.texi, doc/tm.texi: Fix typos.
	Follow spelling conventions.

2006-05-27  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27773
	* fold-const.c (fold_plusminus_mult_expr): Use fold_convert
	to produce a constant of value 1 of generic type.

2006-05-27  Dirk Mueller  <dmueller@suse.de>

	* cgraphunit.c (decide_is_function_needed): Fix wrong
	PR reference.

2006-05-26  Ulrich Weigand  <uweigand@de.ibm.com>

	PR rtl-optimization/27661
	* reload.c (find_reloads): When reloading a VOIDmode constant
	as address due to an EXTRA_MEMORY_CONSTRAINT or 'o' constraint,
	use Pmode as mode of the reload register.

2006-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* doc/invoke.texi (Optimize Options): Document that -funit-at-a-time
	is enabled at -O and above.

2006-05-26  Steven Bosscher  <steven@gcc.gnu.org>

	PR target/27571
	* config/alpha/alpha.c (alpha_does_function_need_gp): Skip jump
	table data.

2006-05-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/20103
	* gimplify.c (gimplify_decl_expr): Do not call gimple_add_tmp_var
	for anonymous variables explicitly declared by front ends.

2006-05-25  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-ssa-structalias.h (PTR_IS_REF_ALL): New macro.
	(struct alias_info): Add new field ref_all_symbol_mem_tag.
	* tree-ssa-alias.c (compute_may_aliases): If the program contains
	ref-all pointers, run a finalization pass for them.
	(compute_flow_insensitive_aliasing): Skip ref-all pointers.
	(finalize_ref_all_pointers): New function.
	(is_escape_site): Return ESCAPE_BAD_CAST for conversion from a
	regular pointer type to a ref-all pointer type.
	(get_tmt_for): Return the special memory tag for ref-all pointers.

2006-05-25  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27743
	* fold-const.c (fold_binary): Do not look at the stripped
	op0 for (a OP c1) OP c2 to a OP (c1+c2) shift optimization.

2006-05-25  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-vrp.c (extract_range_from_assert): Set the range to VARYING
	for LT and GT if the computed range is effectively empty.

2006-05-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/27627
	* pa/pa-modes.def: Use mips_single_format, mips_double_format and
	mips_quad_format formats instead of ieee_single_format,
	ieee_double_format and ieee_quad_format formats, respectively.

2006-05-24  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27639
	PR tree-optimization/26719
	* tree-vrp.c (adjust_range_with_scev): Use scev_direction and adjust
	call to scev_probably_wraps_p.
	* tree-ssa-loop-niter.c (compare_trees, convert_step_widening,
	used_in_pointer_arithmetic_p, convert_step): Removed.
	(nowrap_type_p): New function.
	(scev_probably_wraps_p): Rewritten.
	* tree-scalar-evolution.c (instantiate_parameters_1): Do not call
	chrec_convert if chrec_convert_aggressive might have been used.
	* tree-chrec.c (convert_affine_scev, chrec_convert_1,
	scev_direction): New functions.
	(chrec_convert): Changed to a wrapper over chrec_convert_1.
	* tree-ssa-loop-ivopts.c (idx_find_step): Use convert_affine_scev
	instead of convert_step.
	* tree-flow.h (scev_probably_wraps_p): Declaration changed.
	(convert_step): Declaration removed.
	(convert_affine_scev, nowrap_type_p, scev_direction): Declare.

2006-05-23  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-core.c: Added to header comments.
	* df.h (df_ru_bb_info, df_rd_bb_info, df_lr_bb_info,
	df_ur_bb_info, df_urec_bb_info): Added comments.
	* df-problems (df_ref_bitmap, ru, rd, lr, ur,
	urec, ri problems): Fixed header comments.
	(df_ru_transfer_function): Fixed in-out set dyslexia when copying
	code from df_rd_transfer_function.

2006-05-23  Richard Sandiford  <richard@codesourcery.com>

	* libgcc2.c (LIBGCC2_MAX_UNITS_PER_WORD): New macro.
	(LIBGCC2_UNITS_PER_WORD): Use LIBGCC2_MAX_UNITS_PER_WORD rather than
	MIN_UNITS_PER_WORD to set the default.  Also use it in the guard.

2006-05-23  Joseph Myers  <joseph@codesourcery.com>

	* expr.c (undefined_operand_subword_p): New.
	(emit_move_multi_word): Do not generate move from undefined bits
	of a paradoxical subreg.

2006-05-23  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/27736
	* combine.c (replaced_rhs_value): New variable.
	(combine_instructions): Set it.
	(distribute_notes): When distributing a note in replaced_rhs_insn,
	check whether the value was used in replaced_rhs_value.

2006-05-23  Andrew MacLeod  <amacleod@redhat.com>

	PR c++/26757
	* tree-ssa-loop-im.c (determine_invariantness_stmt): Use
	add_referenced_var instead of add_referenced_tmp_var.
	* tree-complex.c (create_one_component_var): Use add_referenced_var.
	* tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use
	add_referenced_var.
	* tree-tailcall.c (adjust_accumulator_values, adjust_return_value,
	tree_optimize_tail_calls_1): Use add_referenced_var.
	* tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var.
	* tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft):
	Use add_referenced_var.
	* tree-if-conv.c (ifc_temp_var): Use add_referenced_var.
	* gimplify.c (force_gimple_operand): Use add_referenced_var.
	* tree-ssa-phiopt.c (conditional_replacement, abs_replacement):
	Use add_referenced_var.
	* tree-dfa.c (struct walk_state): Remove.
	(find_referenced_vars): Remove walk state and vars_found hash table.
	(make_rename_temp): Use add_referenced_var.
	(find_vars_r): Pass less parameters to add_referenced_var.
	(referenced_var_p): New.  Is var in referenced_var hash table.
	(referenced_var_insert): Assert var isn't already in hash table.
	(add_referenced_var): Don't need walk_state parameter.  Add var if it
	isn't already in the hash table.
	(add_referenced_tmp_var): Remove.
	(find_new_referenced_vars_1): Use add_referenced_var.
	* tree-ssa-pre.c (create_expression_by_pieces,
	insert_into_preds_of_block, insert_extra_phis, realify_fake_stores):
	Use add_referenced_var.
	* tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var.
	* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
	lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use
	add_referenced_var.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref,
	vect_create_data_ref_ptr, vect_create_destination_var,
	vect_init_vector, vect_build_loop_niters,
	vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
	vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks):
	Use add_referenced_var.
	* tree-outof-ssa.c (create_temp): Use add_referenced_var.
	* tree-flow.h (add_referenced_tmp_var): Remove prototype
	(add_referenced_var): Add prototype.
	* tree-ssa-structalias.c (get_constraint_for,
	intra_create_variable_infos): Use add_referenced_var.

2006-05-23  Alexandre Oliva  <aoliva@redhat.com>

	* simplify-rtx.c (simplify_subreg): Adjust REG_OFFSET for
	big-endian paradoxical subregs.
	* var-tracking.c (struct micro_operation_def): Document that,
	for modify micro operations, insn is the subsequent instruction.
	(var_reg_delete_and_set, var_mem_delete_and_set): Split into...
	(var_reg_set, var_mem_set): ... new functions.
	(add_stores): Record subsequent insn.
	(compute_bb_dataflow): Use new functions for MO_USE.
	(emit_notes_in_bb): Use new functions for MO_USE.  Emit use
	notes after the insn, and modify notes before the insn known
	to be the subsequent one.
	(vt_initialize): Invert sorting of MO_CLOBBERs and MO_SETs.

2006-05-23  Kazu Hirata  <kazu@codesourcery.com>

	PR target/27696
	* config/i386/i386.c (ix86_expand_builtin): Use
	gen_sse3_monitor64 for TARGET_64BIT.

2006-05-22  Kenneth Zadeck <zadeck@naturalbridge.com>

	PR rtl-optimization/26375
	PR rtl-optimization/26855
	* df-problems (df_ru_bb_local_compute_process_def): Removed update
	to gen set.
	(df_ru_bb_local_compute): Reversed statements and removed bogus
	comment explaining why they should be in wrong order.
	(df_ru_dump, df_rd_dump): Enhanced debug info.
	* modulo-sched.c (sms_schedule, tree_opt_pass pass_sms): Enhanced
	debug info.
	* ddg.c (add_deps_for_def): Converted use of reaching defs to
	reaching uses and fixed space problem.

2006-05-23  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (decide_is_function_needed): Also nested functions
	and functions declared inline can be optimized out at -O0.

2006-05-22  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/install.texi (Configuration): Remove reference to CrossGCC
	FAQ which was gone.
	(Building): Ditto.

2006-05-22  Kazu Hirata  <kazu@codesourcery.com>

	PR target/27266
	* config/i386/i386.c (ix86_expand_branch): Jump to simple if
	ix86_compare_emitted is non-NULL.

2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27451
	* stmt.c (expand_asm_operands): Skip asm statement with erroneous
	clobbers.

2006-05-22  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/25514
	* combine.c (replaced_rhs_insn): New variable.
	(combine_instructions): Set replaced_rhs_insn when trying to replace
	a SET_SRC with a REG_EQUAL note.
	(distribute_notes): Use replaced_rhs_insn when determining the live
	range of a REG_DEAD register.

2006-18-05  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
	    Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.c (avr_mcu_types): Add support for attiny261,
	attiny461, attiny861, attiny25, attiny45, attiny85, attiny24,
	attiny44, attiny84, at90pwm2, at90pwm3, atmega165p, atmega169p,
	atmega164p, atmega324p, atmega644p, atmega644, atmega329,
	atmega3290, atmega649, atmega6490, atmega406, atmega640,
	atmega1280, atmega1281, at90can32, at90can64, at90usb646,
	at90usb647, at90usb1286 and at90usb1287 devices.
	* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
	* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).

2006-05-22  Richard Sandiford  <richard@codesourcery.com>

	* mklibgcc.in (lib2funcs): Remove _floatdidf from initial assignment.

2006-05-22  Richard Guenther  <rguenther@suse.de>

	Revert
	2006-01-31  Richard Guenther  <rguenther@suse.de>
	Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi (--disable-libgcc-math): Document.

2006-05-22  Richard Guenther  <rguenther@suse.de>

	Revert
	2006-01-31  Richard Guenther  <rguenther@suse.de>

	* doc/invoke.texi (-msselibm): Document.
	* target.h (expand_library_builtin): New target hook.
	* builtins.c (expand_builtin): Use expand_library_builtin.
	(default_expand_library_builtin): New function.
	* gcc.c (LINK_GCC_MATH_SPEC): Define.
	(LINK_COMMAND_SPEC): Handle %(link_gcc_math).
	(link_gcc_math_spec): Declare.
	(static_specs): Add link_gcc_math_spec.
	* expr.h (default_expand_library_builtin): Declare.
	* target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
	(TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
	* config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
	* config/i386/i386.opt (msselibm): New target option.
	* config/i386/i386.c (ix86_builtin_function_variants): New array.
	(ix86_init_sse_abi_builtins): New function.
	(ix86_expand_library_builtin): Likewise.
	(TARGET_EXPAND_LIBRARY_BUILTIN): Define.
	(override_options): Handle error conditions wrt -msselibm.
	(ix86_builtins): Add function codes for SSE2 ABI builtins.
	(ix86_init_builtins): Call ix86_init_sse_abi_builtins.
	* doc/extend.texi (__builtin_sse2_*): Document new target specific
	builtins.

2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/27420
	* c-common.c (self_promoting_args_p): Skip erroneous args.

	PR c/26818
	* c-decl.c (finish_struct): Skip erroneous fields.

2006-05-22  Nick Clifton  <nickc@redhat.com>

	* config/cris/cris.opt (march): Remove VarExists attribute.
	(max-stackframe=): Likewise.

2006-05-22  Kazu Hirata  <kazu@codesourcery.com>

	* doc/rtl.texi: Fix a typo.
	* see.c: Fix comment typos.

	* tree-ssa-structalias.h (alias_info): Remove num_references.

2006-05-21  Mike Stump  <mrs@apple.com>

	* config/darwin-c.c (BAD): Conditionalize on OPT_Wpragmas.
	(BAD2): Add.
	(darwin_pragma_options): Use BAD instead.
	(darwin_pragma_unused): Likewise.
	(darwin_pragma_ms_struct): Likewise.

2006-05-21  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (floatsitf2): Remove constraints.

2006-05-21  Kazu Hirata  <kazu@codesourcery.com>

	PR rtl-optimization/27671
	* simplify-rtx.c (simplify_relational_operation_1): Fix
	simplifications of (eq/ne (xor x y) y) and
	(eq/ne (xor x y) x).

	PR tree-optimization/26622.
	* fold-const.c (fold_ternary) <COND_EXPR>: Call fold_convert
	on arg1.

2006-05-21  Bernhard Fischer  <aldot@gcc.gnu.org>

	* tree-cfg.c: Prune whitespace.
	(debug_tree_cfg): Point to correct header containing the
	TDF_* defines.

2006-05-21  Bernhard Fischer  <aldot@gcc.gnu.org>

	PR middle-end/25776
	* cgraphunit.c (verify_cgraph_node): Typo in error message.

2006-05-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/25776
	* cgraphunit.c (cgraph_optimize): Don't run ipa passes if error
	or sorry count is non zero.

2006-05-20  Andreas Schwab  <schwab@suse.de>

	* config/pa/pa-linux.h (STRING_ASM_OP): Prepend and append a tab.

2006-05-19  Daniel Berlin  <dberlin@dberlin.org>
	    Kenneth Zadeck <zadeck@naturalbridge.com>

	PR rtl-optimization/26855

	* df-scan.c (mw_reg_pool, mw_link_pool): New allocation pools for
	multiword refs.
	(df_scan_alloc): Added code to properly handle multiword hard
	registers and add all_blocks parameter.
	(df_scan_free_internal, df_insn_refs_delete, df_ref_record): Added
	code to properly handle multiword hard registers.
	(df_rescan_blocks): Added code to remove deleted blocks from
	bitmap.
	(df_ref_create_structure, df_ref_record): Added code to properly
	handle subregs.
	(df_ref_record_1): Changed DF_REF_CLOBBER into DF_REF_MUST_CLOBBER
	and set DF_REF_PARTIAL.
	(df_defs_record): Changed DF_REF_CLOBBER into DF_REF_MUST_CLOBBER.
	(df_uses_record): Added DF_REF_PARTIAL for subreg.
	(df_scan_add_problem): Added flags parameter.
	(df_ref_create_structure): Changed switching structure.
	(df_bb_refs_record): Fixed case where duplicate artificial refs
	were created.  Changed location of flags.
	(df_record_entry_block_defs): Added code to make stack pointer
	live in entry block.  Refined cases where frame pointer is needed.
	Changed location of flags.
	(df_record_exit_block_uses, df_insn_refs_record): Changed location of flags.
	(df_set_state): Removed function.
	(df_grow_reg_info, df_reg_chain_unlink, df_ref_remove,
	df_insn_create_insn_record, df_insn_refs_delete,
	df_ref_create_structure): Formatting changes.
	* df-core.c (df_mvs_dump, df_set_flags, df_clear_flags,
	df_delete_basic_block): New function.
	(df_init): Changed location of flags.
	(df_add_problem): Added flags parameter and the way flags are
	processed.
	(df_insn_uid_debug, df_ref_debug, debug_df_defno, debug_df_ref,
	debug_df_chain): Improved debugging output.
	(df_insn_debug, df_insn_uid_debug): Added multiword reg support.
	(df_refs_chain_dump): Removed df parameter.
	(df_iterative_dataflow): Added consistency check.
	(df_prune_to_subcfg): Made public.
	(df_analyze_problem): Added blocks_to_init parameter and made
	public.
	(df_ref_record, df_bb_refs_record, df_mark_reg,
	 df_record_exit_block_uses): Whitespace changes.
	(df_dump): Whitespace changes.
	* df.h: Some reordering to remove forward references.
	(df_ref_flags.DF_REF_MW_HARDREG, DF_REF_PARTIAL,
	DF_REF_MUST_CLOBBER, DF_REF_MAY_CLOBBER): New fields.
	(df_ref_flags.DF_REF_CLOBBER): Deleted field.
	(dataflow.flags): New field.
	(df.flag): Deleted field.
	(df_alloc_function): Added additional bitmap parameter.
	(df_dependent_problem_function): New type.
	(df_problem.changeable_flags): New field.
	(df_ref_flags.DF_REF_DIES_AFTER_THIS_USE, DF_SCAN_INITIAL,
	DF_SCAN_GLOBAL, DF_SCAN_POST_ALLOC, df_state): Removed.
	(df_mw_hardreg): New struct.
	(DF_INSN_UID_MWS): New macro.
	(df_refs_chain_dump, df_ref_debug, df_chain_dump): Removed df
	parameter.
	(df_add_problem, df_ru_add_problem, df_rd_add_problem,
	df_lr_add_problem, df_ur_add_problem, df_urec_add_problem,
	df_ri_add_problem, df_scan_add_problem): Added flags parameter.
	(df_set_state): Removed function.
	(df_set_flags, df_clear_flags, df_delete_basic_block) New functions.
	* df-problems.c (df_chain_dump): Removed df parameter.
	(df_ru_alloc, df_rd_alloc, df_lr_alloc, df_ur_alloc,
	df_urec_alloc, df_chain_alloc, df_ri_alloc): Added all blocks
	parameter.
	(df_ru_alloc, df_rd_alloc): Now resets all blocks.
	(df_rd_bb_local_compute_process_def, df_ur_bb_local_compute,
	df_chain_create_bb, df_create_unused_note, df_ri_bb_compute):
	Split DF_REF_CLOBBER into DF_REF_MAY_CLOBBER and
	DF_REF_MUST_CLOBBER cases.
	(df_ru_bb_local_compute_process_def,
	df_rd_bb_local_compute_process_def, df_lr_bb_local_compute,
	df_lr_bb_local_compute, df_ur_bb_local_compute,
	df_chain_create_bb): Made subreg aware.
	(df_ru_bb_local_compute, df_rd_bb_local_compute,
	df_lr_bb_local_compute, df_lr_bb_local_compute,
	df_chain_create_bb): Cleanup to use proper macros.
	(df_ur_local_finalize, df_urec_local_finalize): Removed unnecessary
	code to fixup bitvectors.
	(df_ri_alloc): Cleared lifetime.
	(df_ignore_stack_reg, df_kill_notes, df_set_notes_for_mw,
	df_create_unused_note): New function.
	(df_ri_bb_compute, df_ri_compute): Added code to create/update
	REG_DEAD and REG_UNUSED notes as well as register information.
	(df_ru_dump, df_rd_dump, df_lr_dump, df_ur_dump, df_urec_dump,
	df_chains_dump): Fixed crash if problem was never run.
	(df_ru_add_problem, df_rd_add_problem, df_lr_add_problem,
	df_ur_add_problem, df_urec_add_problem, df_chain_add_problem,
	df_ri_add_problem): Processes flags in uniform manner.
	(df_ru_alloc, df_ru_local_compute, df_ru_confluence_n, df_ru_free,
	df_ru_dump, df_rd_local_compute, df_rd_confluence_n, df_rd_free,
	df_rd_dump, df_urec_free_bb_info): Formatting changes.
	(df_ru_free_bb_info, df_ru_bb_local_compute, df_ru_dump,
	df_rd_free_bb_info, df_rd_bb_local_compute_process_def,
	df_rd_bb_local_compute, df_rd_dump, df_lr_free_bb_info,
	df_lr_bb_local_compute, df_lr_local_compute, df_ur_free_bb_info,
	df_ur_dump, df_urec_free_bb_info, df_urec_dump,
	df_chain_create_bb, df_ri_bb_compute): Whitespace changes.
	* modulo-sched.c (sms_schedule): Added flag parameter to calls.
	* see.c (see_initialize_data): Ditto.
	* final.c (rest_of_clean_state) Added regstack_completed.
	* rtl.h (regstack_completed): Ditto.
	* reg-stack.c (regstack_completed): Ditto.

2006-05-19  Mike Stump  <mrs@apple.com>

	* c-tree.h (default_conversion): Remove.
	* c-common.h (default_conversion): Add.

2006-05-19  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (valid_value_p): New function.
	(adjust_range_with_scev): Fail if the value of bound is not
	simple.

2006-05-19  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/linux-unwind.h: Include <asm/unistd.h>
	(mips_fallback_frame_state): Use syscall numbers to determine
	the appropriate li instruction for the current ABI.  Only use
	__NR_sigreturn for o32.

2006-05-19  Nicolas Setton  <setton@adacore.com>

	* langhooks.h (struct lang_hooks): Add dwarf_name language hook.
	* langhooks.c (lhd_dwarf_name): New function.
	* langhooks-def.h (lhd_dwarf_name): Declare.
	(LANG_HOOKS_DWARF_NAME): New macro, defaults to lhd_dwarf_name.
	* dwarf2out.c (dwarf2_name): Use the dwarf_name	language hook.

2006-05-19  Richard Sandiford  <richard@codesourcery.com>

	* libgcc2.c (MIN_UNITS_PER_WORD): Move default definition from
	libgcc2.h.
	(LIBGCC2_UNITS_PER_WORD): Provide default definition, using old
	MIN_UNITS_PER_WORD logic from libgcc2.h.  Do nothing if
	LIBGCC2_UNITS_PER_WORD > MIN_UNITS_PER_WORD.
	* libgcc2.h (MIN_UNITS_PER_WORD): Remove definition from here.
	Use LIBGCC2_UNITS_PER_WORD rather than MIN_UNITS_PER_WORD to
	determine the size of Wtype, etc.
	* mklibgcc.in (LIB2_SIDITI_CONV_FUNCS): New argument.
	(swfloatfuncs): New variable.
	(dwfloatfuncs): Likewise.
	(lib2funcs): Remove floating-point conversion functions from
	initial assignment.  Use LIB2_SIDITI_CONV_FUNCS to determine
	the set of conversion routines needed.  Allow entries to specify
	an object name, filename and word size.  Update users accordingly.
	* Makefile.in (libgcc.mk): Pass LIB2_SIDITI_CONV_FUNCS.
	* config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS): Define.

	Revert:

	2006-02-08  Roger Sayle  <roger@eyesopen.com>

	PR target/22209
	* config/fixtfdi.c: New libgcc source file.
	* config/fixunstfdi.c: New source file.
	* config/floatditf.c: New source file.
	* config/floatunditf.c: New souce file.
	* config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source
	files above instead of config/mips/_tilib.c.
	* config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise.

2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa/t-hpux-shlib (SHLIB_LINK): Remove `-lc'.
	* pa/pa-hpux11.h (LIB_SPEC): Update comment.

2006-05-18  Mike Stump  <mrs@apple.com>

	Fix up vla, vm and [*] sematics.

	PR c/18740
	PR c/7948
	PR c/25802
	PR c/27673
	* c-tree.h (struct c_arg_info): Add had_vla_unspec.
	(c_vla_unspec_p): Add.
	(c_vla_type_p): Add.
	* c-decl.c (struct c_scope): Add had_vla_unspec.
	(build_array_declarator): Add support for [*].
	(grokdeclarator): Likewise.
	(grokparms): Likewise.
	(get_parm_info): Likewise.
	* c-objc-common.c (c_vla_unspec_p): Likewise.
	* c-objc-common.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Likewise.
	* c-parser.c (c_parser_typeof_specifier): Evaluate arguments to
	typeof when argument is a variably modified type not inside sizeof or alignof.
	(c_parser_direct_declarator_inner): Propagate errors.
	(c_parser_sizeof_expression): Add support for [*].
	(c_parser_parms_declarator): Initialize had_vla_unspec.
	(c_parser_parms_list_declarator): Likewise.
	* c-typeck.c (c_vla_type_p): Add.
	(composite_type): Add support for vla compositing.
	(comptypes_internal): Add support for vla compatibility.
	(c_expr_sizeof_expr): Evaluate vla arguments.
	* tree.c (variably_modified_type_p): Update comment for [*].

2006-05-18  Michael Matz  <matz@suse.de>

	PR target/27599
	* config.host: Make assignments to host_xmake_file cumulative.
	* config.host (*-darwin*): Test $host, not $target.

2006-05-12  Stuart Hastings  <stuart@apple.com>

	* config/i386/i386.opt (-mstackrealign): New flag.
	* config/i386/i386.c (force_align_arg_pointer): New attribute.
	(ix86_handle_cconv_attribute): Emit error when
	force_align_arg_pointer attribute collides with too many regparms.
	(ix86_function_regparm): Limit regparms when used with
	force_align_arg_pointer attribute.  (ix86_internal_arg_pointer):
	Support stack-realigning prologue in non-main functions.  Emit
	warning for nested functions under -mstackrealign, emit error for
	nested functions with force_align_arg_pointer attribute.
	* doc/extend.texi (force_align_arg_pointer): Document it.
	* doc/invoke.texi (-mstackrealign): Document it.

2006-05-17  Kazu Hirata  <kazu@codesourcery.com>

	PR rtl-optimization/27477
	* combine.c (try_combine): Don't split a parallel consisting
	of two sets into two individual sets if both sets reference
	cc0.

2006-05-17  H.J. Lu  <hongjiu.lu@intel.com>

	* config/arm/arm.opt (target_fpe_name): Remove VarExists.
	* config/rs6000/rs6000.opt (TARGET_NO_FP_IN_TOC): Likewise.

	* doc/options.texi (VarExists): Updated.

2006-05-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* unwind-dw2.c: Add declarations for uw_update_context and
	uw_frame_state_for.
	* pa/hpux-unwind.h (pa_fallback_frame_state): When an export stub is
	detected, advance frame state and context once to skip over stub.

2006-05-17  Sebastian Pop  <pop@cri.ensmp.fr>

	PR middle-end/20256
	PR middle-end/26435
	* tree-loop-linear.c (linear_transform_loops): Don't test perfect_nest_p.
	Call rewrite_into_loop_closed_ssa only when something changed.
	* lambda.h (gcc_loopnest_to_lambda_loopnest): Update declaration.
	* lambda-code.c (can_convert_to_perfect_nest): Declared.
	(gcc_loopnest_to_lambda_loopnest): Removed need_perfect_nest parameter.
	Test for perfect_nest_p here.  Fix formating.
	(replace_uses_equiv_to_x_with_y): Fix formating.
	(stmt_uses_op): Removed.
	(can_convert_to_perfect_nest): Removed loopivs parameter.
	Complete the test by checking the scalar dependences.
	(perfect_nestify): Remove the test for can_convert_to_perfect_nest.
	Fix formating.

2006-05-17  Bernd Schmidt  <bernd.schmidt@analog.com>

	PR bootstrap/22541
	From Dan Kegel <dank@kegel.com>:
	* Makefile.in: Strip "dir/../" combinations from SYSTEM_INCLUDE_DIR.

2006-05-17  Eric Botcazou  <ebotcazou@adacore.com>

	* tree.c (variably_modified_type_p) <ARRAY_TYPE>: Return true
	if the element type is variably modified without recursing.

2006-05-17  Sebastian Pop  <pop@cri.ensmp.fr>

	PR middle-end/27332
	* tree-loop-linear.c (try_interchange_loops): Test for
	no data dependences.

2006-05-17  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27548
	* tree-scalar-evolution.c (scev_const_prop): Do not prolong life
	range of ssa names that appear on abnormal edges.
	* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Export.
	* tree-flow.h (contains_abnormal_ssa_name_p): Declare.

2006-05-17  Bernd Schmidt  <bernd.schmidt@analog.com>

	PR middle-end/27620
	* expr.c (safe_from_p): Handle CONSTRUCTOR again.

2006-05-17  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27415
	* tree.h (OMP_PARALLEL_COMBINED): Define.
	* gimplify.c (struct gimplify_omp_ctx): Add is_combined_parallel field.
	(new_omp_context): Add is_combined_parallel argument.
	(gimplify_scan_omp_clauses): Add in_combined_parallel argument, adjust
	new_omp_context caller.
	(gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
	Adjust gimplify_scan_omp_clauses callers.
	(omp_is_private): Issue errors if iteration variable is firstprivate
	or reduction in the current context.
	* c-parser.c (c_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
	on combined parallel workshare constructs.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in (GCC_OBJS): Replace options.o with gcc-options.o.
	(gcc-options.o): New rule.

	* optc-gen.awk: Protect variables for gcc-options.o with
	#ifdef GCC_DRIVER/#endif.

2006-05-16  Daniel Berlin <dberlin@dberlin.org>

	Fix PR tree-optimization/27373
	* tree-ssa-forwprop.c: (forward_propagate_addr_expr_1): Add argument.
	 (forward_propagate_addr_expr): Update call.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/options.texi: Move the Negative option.

2006-05-16  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22303
	* tree-ssa-ccp.c (fold_const_aggregate_ref): Handle reads
	from STRING_CSTs.
	(evaluate_stmt): Fall back to fold_const_aggregate_ref, if
	ccp_fold did not simplify the statement.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR driver/26885
	* Makefile.in (GCC_OBJS): New.
	(OBJS-common): Add opts-common.o.
	(xgcc$(exeext)): Replace gcc.o with $(GCC_OBJS).
	(cpp$(exeext)): Likewise.
	(gcc.o): Also depend on opts.h.
	(opts-common.o): New.

	* common.opt (gcoff): Add Negative(gdwarf-2).
	(gdwarf-2): Add Negative(gstabs).
	(gstabs): Add Negative(gstabs+).
	(gstabs+): Add Negative(gvms).
	(gvms): Add Negative(gxcoff).
	(gxcoff): Add Negative(gxcoff+).
	(gxcoff+): Add Negative(gcoff).
	* config/i386/i386.opt (m32): Add Negative(m64).
	(m64): Add Negative(m32).

	* doc/options.texi: Document the Negative option.

	* gcc.c: Include "opts.h".
	(main): Call prune_options after expandargv.

	* optc-gen.awk: Generate common declarations for all flag
	variables in options.c. Output the neg_index field.

	* opts.c (find_opt): Moved to ...
	* opts-common.c: Here. New file.

	* opts.h (cl_option): Add a neg_index field.
	(find_opt): New.
	(prune_options): Likewise.

2006-05-16  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27573
	* omp-low.c (expand_omp_parallel): Don't assert
	.OMP_DATA_I = &.OMP_DATA_O is the first statement in the block,
	instead search for it.

	PR c/27499
	* gimplify.c (gimplify_omp_for): Remove assertion that iteration var
	is signed.

2006-05-16  Andreas Schwab  <schwab@suse.de>

	* doc/tm.texi (TARGET_LIBGCC_SDATA_SECTION): Add missing @end
	defmac.

2006-05-15  Roger Sayle  <roger@eyesopen.com>

	PR target/26600
	* config/i386/i386.c (legitimate_constant_p) <CONST_DOUBLE>: TImode
	integer constants other than zero are only legitimate on TARGET_64BIT.
	<CONST_VECTOR> Only zero vectors are legitimate.
	(ix86_cannot_force_const_mem): Integral and vector constants can
	always be put in the constant pool.

2006-05-16  DJ Delorie  <dj@redhat.com>

	* crtstuff.c (__dso_handle): Set section from
	TARGET_LBIGCC_SDATA_SECTION if defined.
	* doc/tm.texi (TARGET_LIBGCC_SDATA_SECTION): Document.
	* config/mips/mips.h (TARGET_LIBGCC_SDATA_SECTION): Define.

2006-05-16  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/27599
	* config.host (i[34567]86-*-mingw*): Append i386/x-mingw32 to
	host_xmake_file.

2006-05-16  Ben Elliston  <bje@au.ibm.com>

	* tree-cfg.c (split_edge_bb_loc): Remove unused variable `src'.

2006-05-15  Per Bothner  <per@bothner.com>

	* tree.c: (last_annotated_node): Use source_locus typedef.
	This permits bootstrapping with --enable-mapped-location.

2006-05-15  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/26830
	* tree-into-ssa.c (struct ssa_name_info): Add age field.
	(info_for_ssa_name, current_info_for_ssa_name_age,
	blocks_to_update): New variables.
	(get_ssa_name_ann): Use info_for_ssa_name instead of SSA_NAME_AUX.
	(clear_ssa_name_info, initialize_flags_in_bb,
	mark_block_for_update): New functions.
	(mark_def_sites, rewrite_stmt): Assert that blocks_to_update is NULL.
	(insert_phi_nodes_for, mark_use_interesting, prepare_block_for_update,
	prepare_def_site_for): Use mark_block_for_update.
	(mark_def_interesting): Assert that the processed block is marked in
	blocks_to_update.  Do not take blocks argument.
	(prepare_use_sites_for, prepare_names_to_update): Do not take blocks
	argument.
	(rewrite_update_init_block, rewrite_update_stmt): Only process
	blocks with statements to rewrite.
	(delete_update_ssa): Do not clear SSA_NAME_AUX.
	(update_ssa): Initialize and free blocks_to_update.  Do not
	clear flags on statements.  Do not use blocks bitmap.
	* tree.h (SSA_NAME_AUX): Removed.
	(struct tree_ssa_name): Removed aux field.
	* print-tree.c (print_node): Do not print SSA_NAME_AUX.

2006-05-15  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27603
	* tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined):
	Do computations in original type.

2006-05-15  Mircea Namolaru  <namolaru@il.ibm.com>

	* see.c: Code style changes such as redundant paranthesis,
	redundant intialization of local variables etc.
	(see_main): Declared now as static.
	* doc/invoke.texi: Update that -fsee is not enabled by
	default at -O3.

2006-05-15  Jakub Jelinek  <jakub@redhat.com>

	* omp-low.c (check_omp_nesting_restrictions): New function.
	(scan_omp_1): Call it.

	PR middle-end/27416
	* omp-low.c (build_outer_var_ref): If VAR is reference in orphaned
	construct, return *VAR.

2006-05-14  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR rtl-optimization/27406
	* bt-load.c (migrate_btr_def): Skip the block having abnormal
	edges.

2006-05-14  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/27538
	* combine.c (expand_compound_operation): Call gen_lowpart
	before calling simplify_shift_const.

2006-05-14  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/22563
	* expmed.c (store_fixed_bit_field): When using AND and IOR to store
	a fixed width bitfield, always force the intermediates into psuedos.

2006-05-14  Bernhard Fischer  <aldot@gcc.gnu.org>

	PR 27501
	* mkconfig.sh: Use operator = instead of == for test.

2006-05-13  Nick Clifton  <nickc@redhat.com>

	* dwarf2out.c (dbx_reg_number): Check return value from
	LEAF_REG_REMAP and only use it if it is valid.
	(multiple_reg_loc_descriptor): Likewise.

2006-05-13  Richard Guenther  <rguenther@suse.de>

	* config.host <i[34567]86-*-cygwin*>: Append i386/x-cygwin to
	host_xmake_file.

2006-05-13  Steven Bosscher  <stevenb.gcc@gmail.com>

	* df-core.c (df_bb_regno_last_use_find): Do not look for dataflow
	information attached to non-INSNs such as NOTEs.
	(df_bb_regno_first_def_find, df_bb_regno_last_def_find): Likewise.

2006-05-12  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_const_ok_for_constraint_p): Disallow -4G for
	On contraint.
	* config/s390/s390.md: Adjust comment describing On constraint.

2006-05-11  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (decide_is_function_needed): Don't force always_inline
	to be output at -O0.

2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR middle-end/27384
	* fold-const.c (size_binop): Move sanity check for arguments to
	the beginning of the function.

	PR middle-end/27488
	* fold-const.c (tree_expr_nonnegative_p): Return early on invalid
	expression.

2006-05-11  Richard Guenther  <rguenther@suse.de>

	PR middle-end/27529
	* fold-const.c (fold_unary): Handle intermediate conversion
	to a pointer type like intermediate conversion to an integer
	type in folding of (T1)(T2)var to var.
	Match the code to the comment in the final conversion for
	(T1)(T2)var to (T1)var regarding to type precision.  Rather
	than disallow T1 being of pointer type, assert that both T1
	and var are of pointer type or not.  Make sure not to fall
	over the frontends lazyness wrt array to pointer decay though.

2006-05-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_struct_value_rtx): Delete.
	(TARGET_STRUCT_VALUE_RTX): Use the default definition.
	(arm_init_cumulative_args): Always initialize nregs to zero.

2006-05-10  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27532
	* tree-object-size.c (plus_expr_object_size): Fix typo.

2006-05-10  Kazu Hirata  <kazu@codesourcery.com>

	PR target/24949
	* config/m68k/m68k.md (ashrdi_const32, ashrdi_const32_mem,
	ashrdi_const, ashrdi3): Use a scratch register.

2006-05-10  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27302
	* fold-const.c (operand_equal_p): For two comparisons,
	try comparison of one comparison code swapped if that yields
	the same code.

2006-05-10  Ben Elliston  <bje@au.ibm.com>

	* tree-pretty-print.c (pretty_print_string): No need to handle
	'\0' as a special character.

	* tree.h: Include "hashtab.h".
	(iterative_hash_expr): Use hashval_t in its prototype.
	* Makefile.in (TREE_H): Add $(HASHTAB_H).

2006-05-09  Steve Ellcey  <sje@cup.hp.com>

	PR bootstrap/26872
	* config.gcc (hppa[12]*-*-hpux10*): Set gas to yes.
	(hppa*64*-*-hpux11*): Ditto.
	(hppa[12]*-*-hpux11*): Ditto.

2006-05-09  David Edelsohn  <edelsohn@gnu.org>

	PR target/26545
	* config/rs6000/aix41.h (TARGET_64BIT): Define.

2006-05-09  Michael Matz  <matz@suse.de>

	* config.host (<i[34567]86-*-*, x86_64-*-*>): Set
	host_extra_gcc_objs and host_xmake_file.
	(<*-*-linux*>): Don't overwrite host_xmake_file.
	* gcc.c (static_spec_functions): Add EXTRA_SPEC_FUNCTIONS.
	* config/i386/i386.h (EXTRA_SPEC_FUNCTIONS): Define.
	(host_detect_local_cpu): Declare.
	(CC1_CPU_SPEC): Add -march=native and -mtune=native cases.
	* config/i386/i386.c (override_options): Handle -mtune=native
	as -mtune=generic.
	* config/i386/x-i386: New file.
	* config/i386/driver-i386.c: New file.
	* doc/invoke.texi (<i386 and x86-64 Options>): Describe
	cpu-type "native".

2006-05-09  Dirk Mueller  <dmueller@suse.de>
	Richard Guenther  <rguenther@suse.de>

	PR middle-end/27498
	* fold-const.c (fold_read_from_constant_string): Relax check
	for matching types to matching modes.

2006-05-09  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/27335
	* loop-unroll.c (peel_loops_completely): Use loops->parray to walk the
	loops.

2006-05-08  Chao-ying Fu  <fu@mips.com>
	    Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips-ps-3d.md (scc_ps, s<code>_ps): New patterns.
	(vcondv2sf, sminv2sf3, smaxv2sf3): Likewise.
	* config/mips/mips.md (UNSPEC_SCC): New constant.
	* config/mips/mips-protos.h (mips_expand_vcondv2sf): Declare.
	* config/mips/mips.c (mips_reverse_fp_cond_p): New function.
	(mips_emit_compare): Use it.
	(mips_expand_vcondv2sf): New function.

2006-05-08  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/27093
	* tree-ssa-alias.c (recalculate_used_alone): Mark variables for
	renaming when they become not-used_alone.

2006-05-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* hpux-unwind.h (pa_fallback_frame_state): Handle return parameter
	relocation and relocation stubs.

2006-05-08  Eric Christopher  <echristo@apple.com>

	* unwind-dw2-fde-darwin.c (examine_objects): Only check data
	section for ppc.

2006-05-08  Jan Hubicka  <jh@suse.cz>

	PR middle-end/24561
	* cgraphunit.c (decide_is_function_needed): When not optimizing even
	unused static functions are needed.

2006-05-08  Roger Sayle  <roger@eyesopen.com>

	PR target/27158
	* reload.c (find_reloads_toplev): Only return the simplified SUBREG
	of a reg_equiv_constant if the result is a legitimate constant.

2006-05-08  Uros Bizjak  <uros@kss-loka.si>

	PR target/27277
	* config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
	standard 80387 constants, raise the cost to prevent
	compress_float_constant() to generate load from memory.

2006-05-08  Kazu Hirata  <kazu@codesourcery.com>

	* config/arm/constraints.md (c): Fix a typo.

	* see.c, tree-flow-inline.h, tree-phinodes.c: Fix comment
	typos.

2006-05-07  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/24879
	* config/i386/pmmintrin.h (_mm_monitor): Remove macro. Use
	inline function.
	(_mm_mwait): Likewise.

	* config/i386/sse.md (sse3_mwait): Replace "mwait\t%0, %1" with
	"mwait".
	(sse3_monitor): Make it 32bit only.
	(sse3_monitor64): New. 64bit monitor.

2006-05-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR target/27421
	* config/i386/i386.c (classify_argument): Skip fields with invalid
	types.

2006-05-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27409
	* tree-ssa-structalias.c (get_constraint_for_component_ref):
	Do not try to find zero-sized subvars.

2006-05-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27136
	* tree-ssa-loop-niter.c (get_val_for): Correct function
	comment, assert requirements.
	(loop_niter_by_eval): Stop processing if the iterated
	value did not simplify.

2006-05-07  Mircea Namolaru  <namolaru@il.ibm.com>

	* opts.c (flag_see): remove its setting at -O3.

2006-05-07  Richard Earnshaw  <rearnsha@arm.com>

	* genpeep.c (main): Make insn-peep.c depend on flags.h.
	* arm/constraints.md: New file.
	* arm.h (REG_CLASS_FROM_LETTER_P): Delete.
	(CONST_OK_FOR_ARM_LETTER, CONST_OK_FOR_THUMB_LETTER)
	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_ARM_LETTER)
	(CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT_STR_ARM)
	(CONSTRAINT_LEN, EXTRA_CONSTRAINT_THUMB, EXTRA_CONSTRAINT_STR)
	(EXTRA_MEMORY_CONSTRAINT): Likewise.
	* arm.md: Include constraints.md.
	(thumb_movsi_insn): Use satisfies_constraint_J.
	(movhi, movqi): Use satisfies_constraint_I.

2006-04-29 Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.h (CRT_BINUTILS_SPECS): Fixed crt* file name
	for atmeg a645 device.

2006-05-06   Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27151
	* tree-vect-transform.c (vectorizable_condition): Punt on
	values that have a different type than the condition.

2006-05-03  Aldy Hernandez  <aldyh@redhat.com>

	PR/21391
	* c-parser.c (c_parser_cast_expression): Only insert casts into
	hash table if pointer.
	* function.c (used_types_insert_helper): Rename from
	used_types_insert.
	(used_types_insert): Call used_types_insert_helper.
	* function.h (used_types_insert): Accept only one argument.

2006-05-05  David Edelsohn  <edesohn@gnu.org>

	* config/rs6000/rs6000.md: Mark all "X" constraints for clobbered
	scratch with output modifier.

2006-05-04  David Edelsohn  <edelsohn@gnu.org>

	PR target/26481
	* config/rs6000/rs6000.md (stmsi_power): Mark clobber constraint
	with output modifier.

2006-05-04  Richard Sandiford  <richard@codesourcery.com>

	PR target/26765
	* config/mips/mips.c (mips_symbolic_address_p): Return true
	for SYMBOL_TLSGD, SYMBOL_TLSLDM, SYMBOL_DTPREL, SYMBOL_TPREL,
	SYMBOL_GOTTPREL, and SYMBOL_TLS.

2006-05-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/14287
	PR tree-optimization/14844
	PR tree-optimization/19792
	PR tree-optimization/21608
	PR tree-optimization/27090
	* tree-ssa-pre.c (try_combine_conversion): New function.
	(compute_avail): After constructing the value-handle
	expression, use try_combine_conversion to combine NOP_EXPRs
	with previous value-handle expressions and use the result if it
	is available.

2006-05-04  Joseph S. Myers  <joseph@codesourcery.com>

	* config/mips/linux64.h (DWARF_OFFSET_SIZE): Remove.

2006-05-04  Jan Hubicka  <jh@suse.cz>

	PR middle-end/25962
	* cgraphunit.c (verify_cgraph_node): Fix cgraph_hash testing.

2006-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/predicates.md (const01_rtx): Tell generator programs
	that this only matches CONST_INTs.  All users changed to VOIDmode
	operands.

	* config/bfin/bfin.c: Include "optabs.h".
	(bfin_rtx_costs): Some costs for vector operations, to allow combine
	to do more work.
	(enum bfin_builtins): Add a number of fractional and vector builtins.
	(bfin_init_builtins): Likewise.
	(struct builtin_description, bdesc_2arg, bdesc_1arg): New.
	(safe_vector_operand, bfin_expand_binop_builtin,
	bfin_expand_unop_builtin): New functions.
	(bfin_expand_builtin): Handle the new builtins.
	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
	__ADSPBLACKFIN__.

2006-05-04  Leehod Baruch  <leehod@il.ibm.com>

	* see.c: New file.
	* Makefile.in (OBJS-common): Add see.o.
	(see.o): Add dependencies.
	* common.opt (fsee): New flag for the see optimization was added.
	* opts.c (flag_see): Initialized.
	* passes.c (init_optimization_passes, pass_see): New pass.
	* rtl.h (see_main): Declaration as extern.
	* timevar.def (TV_SEE): New.
	* tree-pass.h (pass_see): Declaration as extern.
	* invoke.texi (-fsee): Document.
	* recog.c (validate_simplify_insn): New function.
	* recog.h (validate_simplify_insn): Declaration as extern.
	* df-problems.c (df_chain_dump): Check for NULL.

2006-05-04  Kenneth Zadeck <zadeck@naturalbridge.com>
	    Daniel Berlin  <dberlin@dberlin.org>

	* cfgrtl.c (insert_insn_bb_end_new): New function.
	* basic-block.h (insert_insn_bb_end_new): Declaration as extern.

2006-05-04  Leehod Baruch  <leehod.baruch@weizmann.ac.il>

	* df.h (struct web_entry): Moved from web.c.
	(union_defs): Declaration as extern.
	(unionfind_root): Likewise.
	(unionfind_union): Likewise.
	* web.c (struct web_entry): Moved to df.h.
	(unionfind_root): Remove static declaration.
	(unionfind_union): Likewise.
	(union_defs): Likewise and generalize to use callback function.
	(web_main): Update arguments for union_defs function call.

2006-05-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26447
	* tree-ssa-pre.c (realify_fake_stores): For necessary loads
	produce SSA_NAME copies before the store stmt to avoid
	breaking exception handling.

2006-05-04  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27388
	* gimplify.c (omp_is_private): If var is shared in some outer context,
	return false instead of true.  Stop searching on parallel context
	boundary.

2006-05-03  Alexandre Oliva  <aoliva@redhat.com>

	PR java/8260
	* coverage.c: Use get_gcov_unsigned_t() instead of
	unsigned_type_node all over.

2006-05-02  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/27381
	* tree-phinodes.c (remove_phi_arg_num): When moving a phi argument,
	maintain the same immediate_use links.
	* tree-ssa-operands.c (dump_immediate_uses_for): Show iteration marker
	node rather than segfaulting.

2006-05-03  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/27395
	* gimplify.c (gimplify_scan_omp_clauses): Compare OMP_CLAUSE_CODE
	rather than TREE_CODE to OMP_CLAUSE_REDUCTION.  Set also GOVD_SEEN
	bit for OMP_CLAUSE_REDUCTION_PLACEHOLDER.

2006-05-02  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26626
	* tree-ssa-structalias.c (compute_points_to_sets): For now, solve
	always.
	* tree-ssa-operands.c (access_can_touch_variable): Allow
	typecasting through union pointers.

2006-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/26943
	* omp-low.c (maybe_lookup_decl_in_outer_ctx): New function.
	(build_outer_var_ref): Use maybe_lookup_decl_in_outer_ctx
	to find if var will be a global variable even in the nested context.
	(omp_copy_decl): Only check for global variable at the end, it might
	be overridden in outer contexts.
	(scan_sharing_clauses): For global variables don't create a field.
	(lower_rec_input_clauses): Do nothing for global shared variables.
	Emit a barrier at the end of ILIST if there were any decls in both
	firstprivate and lastprivate clauses.
	(lower_send_clauses): Do nothing for global variables except for
	COPYIN.

2006-05-02  Zdenek Dvorak <dvorakz@suse.cz>

	* tree.c (unsigned_type_for, signed_type_for): Make sure a type
	of the correct signedness is returned.

2006-05-02  Jeff Law  <law@redhat.com>

	PR tree-optimization/27364
	* tree-vrp.c (vrp_int_const_binop): Fix detection of overflow from
	multiply expressions.

2006-05-02  Tom Tromey  <tromey@redhat.com>

	* tree-flow-inline.h (op_iter_init_phiuse): Fixed typo.

2006-05-02  Kazu Hirata  <kazu@codesourcery.com>

	PR target/27387
	* arm.c (arm_output_mi_thunk): Use pc-relative addressing when
	-mthumb -fPIC are used.

2006-05-02  Stanislaw Skowronek  <skylark@linux-mips.org>
	    Joshua Kinard  <kumba@gentoo.org>

	PR target/25871
	* config/mips/mips.h (TRAMPOLINE_TEMPLATE): Avoid 32-bit moves
	with 64-bit pointers.

2006-05-02  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (add_minipool_forward_ref): Check if insn
	and pool overlap.
	(create_fix_barrier): Check that a suitable barrier location is
	found.
	(arm_reorg): Include ftmp->address in allowable range of addresses.

2006-05-02  David Billinghurst <David.Billinghurst@riotinto.com>

	PR ada/27366
	* ada/env.c (__gnat_clearenv): Use unsetenv() to clear environment
	on Cygwin.

2006-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27337
	* gimplify.c (gimplify_scan_omp_clauses): Handle INDIRECT_REF
	around RESULT_DECL for result passed by reference.
	(gimplify_expr): Call omp_notice_variable when RESULT_DECL is seen.
	* omp-low.c (use_pointer_for_field): Don't look at
	DECL_HAS_VALUE_EXPR_P for RESULT_DECLs.
	(scan_omp_1): Call remap_decl on RESULT_DECLs.
	(lower_rec_input_clauses): Don't allocate VLA memory for the second
	time or var for passing by reference for
	OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE clauses.  Allow creation of
	TREE_ADDRESSABLE variables when passing by reference.

	* omp-low.c (dump_omp_region): Fix output formatting.

	PR middle-end/27328
	* omp-low.c (remove_exit_barrier): Handle NULL exit_bb.
	(expand_omp_parallel): Likewise.
	* tree-cfg.c (move_sese_region_to_fn): Likewise.

	PR middle-end/27325
	* omp-low.c (lower_omp_sections): Call maybe_catch_exception
	on statement list containing also constructors and destructors.
	(lower_omp_single, lower_omp_for, lower_omp_parallel): Likewise.

	PR middle-end/27310
	* except.c (duplicate_eh_regions): Fix clearing of
	cfun->eh->region_array entries.

2006-05-01  DJ Delorie  <dj@redhat.com>

	* configure.ac (gcc_cv_nm): Don't use an in-tree nm if
	build!=host.
	(gcc_cv_objdump): Likewise.
	* configure: Regenerated.

2006-05-01  Kazu Hirata  <kazu@codesourcery.com>

	PR target/27374
	* config/arm/vfp.md (*arm_movdi_vfp): Correct the output
	templates for case 3 and 4.

2006-05-01  DJ Delorie  <dj@redhat.com>

	* vec.c: Include bconfig.h when appropriate.
	* Makefile.in (build/vec.o): Adjust dependencies.
	* mkconfig.sh: Make sure config.h isn't used for build machine
	compiles.

2006-05-01  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-into-ssa.c (phis_to_rewrite, blocks_with_phis_to_rewrite): New
	variables.
	(mark_phi_for_rewrite): New function.
	(insert_phi_nodes_for, mark_use_interesting): Call
	mark_phi_for_rewrite.
	(rewrite_update_phi_arguments): Traverse only phis in phis_to_rewrite.
	(update_ssa): Initialize and free phis_to_rewrite.

2006-05-01  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/27291
	* loop-doloop.c (add_test, doloop_modify): Handle the case condition is
	folded to a constant.

2006-05-01  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27283
	* tree-ssa-loop-ivopts.c (struct nfe_cache_elt): Store just trees,
	not whole # of iteration descriptions.
	(niter_for_exit): Return just # of iterations.  Fail if # of iterations
	uses abnormal ssa name.
	(niter_for_single_dom_exit): Ditto.
	(find_induction_variables, may_eliminate_iv): Expect niter_for_exit to
	return just the number of iterations.

2006-05-01  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/27144
	* tree-ssa-loop-niter.c (derive_constant_upper_bound): New function.
	(record_estimate): Only record constant upper bound.
	(infer_loop_bounds_from_undefined): Call
	compute_estimated_nb_iterations just once.
	(proved_non_wrapping_p): Renamed to ...
	(n_of_executions_at_most): ... this.  Expect bound to be a constant.
	(convert_step_widening, scev_probably_wraps_p): Call
	n_of_executions_at_most instead of proved_non_wrapping_p.
	(substitute_in_loop_info): Do not replace values in bounds.
	* cfgloop.h (struct nb_iter_bound): Remove "additional" field.  Update
	comments.

2006-05-01  Richard Henderson  <rth@redhat.com>

	PR c/27358
	* c-parser.c (c_parser_skip_to_end_of_block_or_statement): Move after
	c_parser_skip_to_pragma_eol.  Convert to switch statement.  Handle
	CPP_PRAGMA.

2006-05-01  Roger Sayle  <roger@eyesopen.com>

	* c-typeck.c (parser_build_binary_op): Don't call the function
	unsigned_conversion_warning to spot operand/result type overflow.
	(build_binary_op): Instead, call convert_and_check instead of
	convert to report the problem when the operands are promoted.
	* c-common.c (unsigned_conversion_warning): Make static.
	* c-common.h (unsigned_conversion_warning): Delete prototype.

2006-05-01  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26726
	* tree-ssa-loop-ivopts.c (idx_find_step): Mark source of the
	problem ...
	(find_interesting_uses_address): ... we work around here
	by folding INDIRECT_REFs in the substituted base.

2006-05-01  Diego Novillo  <dnovillo@redhat.com>

	* omp-low.c (dump_omp_region): Add newlines.

2006-04-30  Roger Sayle  <roger@eyesopen.com>

	* common.opt (Woverflow): New command line option.
	* c-common.c (constant_expression_warning): Check warn_overflow.
	(overflow_waring): Pass OPT_Woverflow to warning.
	(unsigned_conversion_warning): Likewise.
	(convert_and_check): Likewise.
	* doc/invoke.texi: Document new command line option.

2006-04-30  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_override_options): Enable
	TARGET_NO_FP_IN_TOC for section anchors.
	(optimization_options): Enable section anchors for all
	non-"Objective" languages.

2006-04-28  Eric Christopher  <echristo@apple.com>

	* config/darwin-c.c (darwin_ms_struct): Move this
	(darwin_set_default_type_attributes): and this...
	* config/darwin.c: ... here.
	* config/darwin.h (darwin_ms_struct): Declare.

2006-04-28  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-dom.c (propagate_rhs_into_lhs): Fix assert clause.

2006-04-28  Roger Sayle  <roger@eyesopen.com>

	PR c/25309
	* c-typeck.c (struct spelling): Make I an unsigned HOST_WIDE_INT.
	(push_array_bounds): Delete prototype.  Change BOUNDS argument to
	an unsigned HOST_WIDE_INT.
	(print_spelling): Use HOST_WIDE_INT_PRINT_UNSIGNED to output the
	array index.
	(really_start_incremental_init): No need to call convert because
	bitsize_zero_node is already of type bitsizetype.
	(push_init_level): Extract the value of constructor_index as an
	unsigned HOST_WIDE_INT quantity, using tree_low_cst.
	(process_init_element): Likewise.

2006-04-28  Joseph S. Myers  <joseph@codesourcery.com>

	* gcc.c (process_command): Add program name to GCC_EXEC_PREFIX
	value before passing to make_relative_prefix.

2006-04-28  Alan Modra  <amodra@bigpond.net.au>

	PR middle-end/27260
	* builtins.c (expand_builtin_memset): Expand val in original mode.

2006-04-27  Eric Christopher  <echristo@apple.com>

	* target-def.h (TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Bracket
	with #ifndef/#endif.
	* config/darwin-c.c (darwin_ms_struct): New.
	(darwin_pragma_ms_struct): Ditto.
	(darwin_set_default_type_attributes): Ditto.
	* config/darwin-protos.h (darwin_pragma_ms_struct): Declare.
	* config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS):
	Register ms_struct pragma.
	* config/i386/darwin.h (REGISTER_TARGET_PRAGMAS): Declare.
	(TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Ditto.
	* config/rs6000/rs6000.c (rs6000_set_default_type_attributes): Call
	darwin_set_default_type_attributes if TARGET_MACHO.

2006-04-27  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/26854
	* tree-vrp.c (remove_range_assertions): Use new Immuse iterator.
	* doc/tree-ssa.texi: Update immuse iterator documentation.
	* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Use new iterator.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Use new iterator.
	* tree-flow-inline.h (end_safe_imm_use_traverse, end_safe_imm_use_p,
	first_safe_imm_use, next_safe_imm_use): Remove.
	(end_imm_use_stmt_p): New.  Check for end of immuse stmt traversal.
	(end_imm_use_stmt_traverse): New.  Terminate immuse stmt traversal.
	(move_use_after_head): New.  Helper function to sort immuses in a stmt.
	(link_use_stmts_after): New.  Link all immuses in a stmt consescutively.
	(first_imm_use_stmt): New.  Get first stmt in an immuse list.
	(next_imm_use_stmt): New.  Get next stmt in an immuse list.
	(first_imm_use_on_stmt): New.  Get first immuse on a stmt.
	(end_imm_use_on_stmt_p): New.  Check for end of immuses on a stmt.
	(next_imm_use_on_stmt): New.  Move to next immuse on a stmt.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr): Use new iterator.
	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use new iterator.
	(perfect_nestify): Use new iterator.
	* tree-vect-transform.c (vect_create_epilog_for_reduction): Use new
	iterator.
	* tree-flow.h (struct immediate_use_iterator_d): Add comments.
	(next_imm_name): New field in struct immediate_use_iterator_d.
	(FOR_EACH_IMM_USE_SAFE, BREAK_FROM_SAFE_IMM_USE): Remove.
	(FOR_EACH_IMM_USE_STMT, BREAK_FROM_IMM_USE_STMT,
	FOR_EACH_IMM_USE_ON_STMT): New immediate use iterator macros.
	* tree-cfg.c (replace_uses_by): Use new iterator.
	* tree-ssa-threadedge.c (lhs_of_dominating_assert): Use new iterator.
	* tree-ssa-operands.c (correct_use_link): Remove.
	(finalize_ssa_use_ops): No longer call correct_use_link.

2006-04-27  Stuart Hastings  <stuart@apple.com>

	* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): New.
	* config/t-darwin (crt3.o): Use it.
	* config/rs6000/rs6000.c (rs6000_initialize_trampoline): Remove
	'pmode', use Pmode instead of SImode for SYMBOL_REF.
	* config/rs6000/rs6000.md (call_indirect_nonlocal_sysv,
	call_nonlocal_sysv, call_value_indirect_nonlocal_sysv,
	call_value_nonlocal_sysv): Suffix with the "P" macro for 32/64
	support.

2006-04-27  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (store_fixed_bit_field): If we're not optimizing for
	size, force the intermediate into a new pseudo rather instead of
	performing both a bitwise AND and a bitwise IOR in memory.

2006-04-27  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/26685
	* params.def (PARAM_MAX_CSE_INSNS): Correct typo that named
	this one "max-flow-memory-locations".

2006-04-27  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/25148
	* tree-vrp.c (compare_values): Remove code dealing with
	comparisons against type min/max value.  Honour overflow
	and negative constants in code dealing with comparisons
	of plus and minus expressions.
	(value_inside_range): Use fold_binary with LE_EXPR and
	GE_EXPR rather than compare_values.

2006-04-27  Dirk Mueller  <dmueller@suse.de>

	* config/i386/xmmintrin.h (_mm_shuffle_pi16): Declare
	prototype for SSE.

2006-04-26  Kenneth Zadeck <zadeck@naturalbridge.com>

	* basic-block.h (safe_insert_insn_on_edge): Removed.
	* cfgrtl.c (mark_killed_regs, safe_insert_insn_on_edge): Removed.

2006-04-26  David Edelsohn  <edelsohn@gnu.org>
	    Paolo Bonzini  <bonzini@gnu.org>

	PR middle-end/27282
	* combine.c (simplify_and_const_int_1): Use gen_int_mode.
	(simplify_and_const_int): Same.

2006-04-26  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-dse.c (dse_optimize_stmt): Remove unused variable USE.

2006-04-26  Jakub Jelinek  <jakub@redhat.com>

	PR c/26171
	* cgraph.c (cgraph_varpool_finalize_decl): Don't call
	cgraph_varpool_assemble_pending_decls if -fopenmp, unless
	cgraph_global_info_ready.

	PR middle-end/26913
	* tree-cfg.c (find_outermost_region_in_block): Handle RESX_EXPR.

	PR c/25996
	* c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for if
	either decl or init is error_mark_node.

	PR middle-end/25989
	* tree-flow.h (struct omp_region): Add sched_kind.
	* omp-low.c (expand_parallel_call): Use region->inner->sched_kind
	instead of extracting omp for data.
	(expand_omp_for): Save extracted sched_kind.

2006-04-25  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (store_bit_field): Also check whether the bitsize is
	valid for the machine's "insv" instruction before moving the
	target into a pseudo for use with the insv.
	* config/i386/predicates.md (const8_operand): New predicate.
	* config/i386/i386.md (extv, extzv, insv): Use the new
	const8_operand predicate where appropriate.

2006-04-25  DJ Delorie  <dj@redhat.com>

	* doc/install.texi (Specific): Clarify that this is not a list of
	supported hosts or targets.

2006-04-25  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/26725
	* cfgrtl.c (rtl_redirect_edge_and_branch_force): Set the source
	block's BB_DIRTY flag.

2006-04-25  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (size_of_locs): Don't fill dw_loc_addr if there
	are no branches.

	* dwarf2asm.c (dw2_asm_output_data): Don't generate RTL just
	to print an integer.

2006-04-25  David Edelsohn  <edelsohn@gnu.org>

	* varasm.c (align_variable): New function.
	(get_block_for_decl): Apply align_variable to DECL before
	calculating section information.
	(assemble_variable): Split out alignment computation.

2006-04-25  Andreas Krebbel  <krebbel1@de.ibm.com>

	* expmed.c (store_bit_field): Handle paradoxical subregs on big endian
	machines.

2006-04-25  Bernd Schmidt  <bernd.schmidt@analog.com>

	* genmodes.c (make_vector_mode): Allow making VECTOR_MODE_INT of a
	MODE_PARTIAL_INT mode.
	* config/bfin/bfin-modes.def: Add V2PDI and V2SI.
	* config/bfin/bfin.c (print_operand): Add macflag and mac/msu modifiers
	for CONST_INTs.
	(hard_regno_mode_ok): V2PDImode is ok for accumulators.
	* config/bfin/bfin.h (CLASS_MAX_NREGS, HARD_REGNO_NREGS): Handle
	V2PDImode.
	* config/bfin/predicates.md (const01_operand, vec_shift_operand):
	New predicates.
	* config/bfin/bfin.md (UNSPEC_MUL_WITH_FLAG, UNSPEC_MAC_WITH_FLAG):
	New constants.
	(MACFLAG_NONE, MACFLAG_T, MACFLAG_FU, MACFLAG_TFU, MACFLAG_IS,
	MACFLAG_IU, MACFLAG_W32, MACFLAG_M, MACFLAG_S2RND, MACFLAG_ISS2,
	MACFLAG_IH): Likewise.
	(movstricthi_1): Renamed from "*movstricthi".
	(load_accumulator, load_accumulator_pair, movsi_insv, insv,
	ssaddsi3, sssubsi3, ssnegsi2, signbitssi2, smaxhi3, sminhi3,
	abshi2, neghi2, ssneghi2, signbitshi2, movhi_low2high,
	movhi_high2high, movhi_low2low, movhi_high2low, movhiv2hi_low,
	movhiv2hi_high, composev2hi, movv2hi_hi, movv2hi_hi_low,
	movv2hi_hi_high, ssaddhi3, sssubhi3, ssaddv2hi3, sssubv2hi3,
	addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3,
	sublohiv2hi3, subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3,
	addlohiv2hi3, addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3,
	mulhisi_ll, mulhisi_lh, mulhisi_hl, mulhisi_hh, ssnegv2hi2,
	ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3, packv2hi,
	flag_mulhi, flag_mulhisi_parts, flag_machi, flag_machi_acconly,
	flag_macinithi, flag_macinit1hi, flag_mulv2hi, flag_mulv2hi_parts,
	flag_macv2hi_parts, flag_macv2hi_parts_acconly,
	flag_macinitv2hi_parts, flag_macinit1v2hi_parts): New patterns.

	* doc/rtl.texi (ss_ashift): Improve wording.

2006-04-24  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (verify_marks_clear): New.
	(prune_unused_types): Call verify_marks_clear initially, not
	prune_unmark_dies.

2006-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>

	* rtl.def (SS_ASHIFT, SS_NEG): New codes.
	* doc/rtl.texi: Document them.
	* simplify-rtx.c (simplify_unary_operation,
	simplify_binary_operation_1): Don't abort when we see them.

2006-04-24  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	2006-04-23  Mark Mitchell  <mark@codesourcery.com>
	* configure.ac: Completely disregard languages that are not
	enabled.
	* configure: Regenerated.

2006-04-24  Andrew Pinski  <pinskia@gcc.gnu.org>
	Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27236
	* tree-inline.c (copy_body_r): Make sure to copy
	TREE_THIS_VOLATILE flag.

2006-04-24  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26869
	* tree-complex.c (update_parameter_components): Don't handle
	unused parameters which have no default def.

2006-04-24  Andrew Pinski  <pinskia@gcc.gnu.org>
	Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27218
	* tree-inline.c (expand_call_inline): Strip useless type
	conversions for the return slot address.

2006-04-24  Richard Guenther  <rguenther@suse.de>

	* cfgloop.h (struct loops): Remove unused field array.  Reorder
	state after num.
	(LOOP_PREFETCH): Remove.

2006-04-24  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22525
	* value-prof.c (tree_mod_pow2): Remove unnecessary temporary
	variable, adjust types of generated expressions.

2006-04-23  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in (c-convert.o): Add dependency on $(TARGET_H)
	(tree-vect-patterns.o): Likewise.
	(jump.o): Likewise.
	(cselib.o): Likewise.
	(loop-doloop.o): Likewise.
	(regclass.o): Likewise.
	(reload1.o): Likewise.
	(explow.o): Replace target.h with $(TARGET_H).
	(ipa-prop.o): Likewise.
	(ipa-cp.o): Likewise.
	(ipa-inline.o): Likewise.
	(reorg.o): Likewise.
	(reg-stack.o): Likewise.

2006-04-23  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-tailcall.c (pass_tail_recursion): Use gate_tail_calls too.

2006-04-23  Mark Mitchell  <mark@codesourcery.com>

	* print-tree.c (print_node): Print DECL_BIT_FIELD_TYPE.

	* configure.ac: Completely disregard languages that are not
	enabled.
	* configure: Regenerated.

	PR c++/26534
	* c-common.h (c_build_bitfield_integer_type): Declare.
	* c-decl.c (c_build_bitfield_integer_type): Move to ...
	* c-common.c (c_build_bitfield_integer_type): ... here.

2006-04-23  Roger Sayle  <roger@eyesopen.com>

	PR target/21283
	* config/fr30/fr30.md (define_split): Avoid calling gen_lowpart on
	a SImode SUBREG of a floating point register after no_new_pseudos.

2006-04-23  Roger Sayle  <roger@eyesopen.com>

	* config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to
	identify potentially eliminable registers to additionally catch
	VIRTUAL_INCOMING_ARGS_REGNUM.
	(addsi3): Update the conditions on when to use addsi_small_int.

2006-04-23  Roger Sayle  <roger@eyesopen.com>

	PR target/16641
	* config/fr30/fr30.h (GO_IF_LEGITIMATE_ADDRESS): Check REGNO for
	STACK_POINTER_RTX and FRAME_POINTER_RTX instead of comparing the
	rtx to stack_pointer_rtx or frame_pointer_rtx directly.

2006-04-23  Eric Botcazou  <ebotcazou@adacore.com>

	* fold-const.c (range_predecessor): Use operand_equal_p
	as the predicate for equality.
	(range_successor): Likewise.

2006-04-22  Kazu Hirata  <kazu@codesourcery.com>

	Revert:
	* config/soft-fp/op-common.h: Fix a typo.

2006-04-22  Frank Ch. Eigler  <fche@redhat.com>

	PR libmudflap/26864
	* common.opt (flag_mudflap_threads): Overload flag_mudflap.
	* tree-mudflap.c (flag_mudflap_threads): Derive from flag_mudflap.

2006-04-22  Kazu Hirata  <kazu@codesourcery.com>

	* config/soft-fp/op-common.h, double-int.h, tree-ssa-dom.c:
	Fix comment typos.
	* doc/tm.texi: Fix a typo.

2006-04-21  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (struct die_struct): Document that die_sib makes
	a circular linked list.
	(FOR_EACH_CHILD): New.
	(reverse_die_lists): Delete.
	(reverse_all_dies): Delete.
	(add_dwarf_attr): Correct documentation.
	(remove_child_with_prev): New.
	(remove_child_TAG): Update for change to die_struct, use
	remove_child_with_prev.
	(add_child_die): Update for change to die_struct.
	(splice_child_die): Use remove_child_with_prev and add_child_die.
	(print_die): Use FOR_EACH_CHILD.
	(die_checksum): Likewise.
	(assign_symbol_names): Likewise.
	(output_location_lists): Likewise.
	(build_abbrev_table): Likewise.
	(calc_die_sizes): Likewise.
	(mark_dies): Likewise.
	(unmark_dies): Likewise.
	(unmark_all_dies): Likewise.
	(output_die): Likewise.
	(prune_unused_types_mark): Likewise.
	(prune_unused_types_walk): Likewise.
	(same_die_p): Update for change to die_struct.
	(break_out_includes): Likewise.
	(prune_unused_types_prune): Likewise.
	(add_sibling_attributes): Use FOR_EACH_CHILD, simplify logic.
	(prune_unmark_dies): Use FOR_EACH_CHILD, don't clear die_mark if
	it's already clear.
	(dwarf2out_finish): Don't call reverse_all_dies.

2006-04-21  Eric Christopher  <echristo@apple.com>

	* df-core.c, tree-outof-ssa.c, config/i386/i386.c: Fix typos
	in comments and function names.

2006-04-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c/25875
	* c-typeck.c (digest_init): Robustify.

	* c-typeck.c (pop_init_level): Simplify.

2006-04-21  Steve Ellcey  <sje@cup.hp.com>

	* config/pa/t-pa64: Add dependencies on $(GCC_PASSES).

2006-04-21  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_override_options): Error on iWMMXt and
	hardware floating point.

2006-04-21  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add sfp to
	NON_FLOAT_REGS.

2006-04-21  Nick Clifton  <nickc@redhat.com>

	* config/sh/t-elf (EXTRA_MULTILIB_PARTS): Include
	OPT_EXTRA_PARTS.

2006-04-21  Alan Modra  <amodra@bigpond.net.au>

	PR target/27230
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Use
	C++ lang type in traceback table for Objective-C++.

	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Update comment.

2006-04-20  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (asm_preferred_eh_data_format): Reformat.

2006-04-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR mudflap/26789
	* tree-mudflap.c (mudflap_finish_file): Skip function when there
	were errors.  Remove check for erroneous objects.

2006-04-20  Jeff Law  <law@redhat.com>

	PR tree-optimization/26854
	* tree-ssa-dse.c (dse_optimize_stmt): Avoid num_imm_uses when
	checking for zero or one use.
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Similarly.
	* tree-cfgcleanup.c (merge_phi_nodes): Similarly.
	* tree-ssa-reassoc.c (negate_value): Similarly.
	(reassociate_bb): Similarly.

2006-04-20  Jakub Jelinek  <jakub@redhat.com>

	PR C/27558
	* c-pretty-print.c (pp_c_direct_abstract_declarator): Print
	TYPE_MAX_VALUE (TYPE_DOMAIN (t)) + 1 for ARRAY_TYPE rather
	than plain TYPE_MAX_VALUE (TYPE_DOMAIN (t)).

2006-04-20  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all
	fp regs if the last fp arg doesn't fit in regs.

2006-04-20  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/27182
	* config/sh/sh.md (movsicc_true+3): Tweak condition for the case
	that the last insn has the REG_INC note.

2006-04-19  Carlos O'Donell  <carlos@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	PR c/26774
	* stor-layout.c (update_alignment_for_field): Do not align
	ERROR_MARK nodes.
	(place_union_field): Place union field at the start of the union.
	(place_field): Move ERROR_MARK check later, and use the current
	allocation position to maintain monotonicity.

2006-04-19  Zdenek Dvorak <dvorakz@suse.cz>

	* dominance.c: Include timevar.h.
	(calculate_dominance_info): Use TV_DOMINANCE.
	* timevar.def (TV_DOMINANCE): New timevar.
	* Makefile.in (dominance.o): Add TIMEVAR_H dependency.

2006-04-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR rtl-optimization/14261
	* ifcvt.c (noce_emit_move_insn): Call store_bit_field if the resulting
	move would be an INSV insn.
	(noce_process_if_block): Don't optimize if the destination is a
	ZERO_EXTRACT which can't be handled by noce_emit_move_insn.

2006-04-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md: Add comments with the instructions emitted
	by an insn pattern if macros are used.

2006-04-19  Alan Modra  <amodra@bigpond.net.au>

	PR rtl-optimization/26026
	* fold-const.c (fold_binary): Optimize div and mod where the divisor
	is a known power of two shifted left a variable amount.

2006-04-18  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (prune_unused_types_update_strings): Don't add strings
	to hash table twice when the debug_str section has SECTION_MERGE.

2006-04-18  Joseph S. Myers  <joseph@codesourcery.com>

	* config/soft-fp: New directory.  From glibc.
	* config/soft-fp/t-softfp: New.
	* config/soft-fp/README: New.
	* mklibgcc.in: Handle LIB2FUNCS_EXCLUDE.
	* Makefile.in (LIB2FUNCS_EXCLUDE, SFP_MACHINE): New.
	(libgcc.mk): Pass LIB2FUNCS_EXCLUDE.
	(LIBGCC_DEPS): Add $(SFP_MACHINE).
	* config.gcc: Use rs6000/t-fprules-fpbit or
	rs6000/t-fprules-softfp and soft-fp/t-softfp together with
	rs6000/t-fprules.
	* config/rs6000/sfp-machine.h: New.  Based on glibc.
	* config/rs6000/t-fprules-fpbit, config/rs6000/t-fprules-softfp:
	New.
	* config/rs6000/t-fprules: Remove fp-bit rules.
	* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Use +=.
	* config/rs6000/t-linux64: Likewise.  Remove duplicates from
	LIB2FUNCS_EXTRA.  Remove fp-bit rules.
	(softfp_wrap_start, softfp_wrap_end): New.

2006-04-18  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.h (PTRDIFF_TYPE): Define.

2006-04-18  Devang Patel  <dpatel@apple.com>

	* doc/invoke.texi (-Wuninitialized): Clarify -O connection.

2006-04-18  Nick Clifton  <nickc@redhat.com>

	* config/sh/t-symbian: Add rule to build sh-c.o
	* config/sh/symbian.c (sh_symbian_mark_dllexport): Replace use
	of DECL_NON_ADDR_CONST_P with DECL_DLLIMPORT_P.
	(sh_symbian_encode_section_info): Likewise.

2006-04-18  Andreas Krebbel  <krebbel1@de.ibm.com>

	* builtins.c (expand_builtin_strcmp): Cover label definition of
	do_libcall with HAVE_cmpstrnsi.

2006-04-18  Kazu Hirata  <kazu@codesourcery.com>

	* function.c (temp_slots_at_level, max_slot_level): Use VEC
	instead of VARRAY.
	* function.h (temp_slot_p): New.
	(function): Change the type of x_used_temp_slots to
	VEC(temp_slot_p,gc) *.

2006-04-18  Nick Clifton  <nickc@redhat.com>

	* config/mmix/mmix.h (OPTIMIZATION_OPTIONS): Remove reference to
	flag_strength_reduce.

	* doc/tm.texi (TARGET_SECTION_TYPE_FLAGS): Fix typo.

2006-04-18  Paolo Bonzini  <bonzini@gnu.org>

	PR target/27117

	Partial revert of revision 112637
	2006-04-03  Paolo Bonzini  <bonzini@gnu.org>
		    Dale Johannesen  <dalej@apple.com>

	PR target/19653
	* regclass.c (struct reg_pref): Update documentation.
	(regclass): Set prefclass to NO_REGS if memory is the best option.
	(record_reg_classes): Cope with a prefclass set to NO_REGS.

2006-04-18  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/26821
	* tree-ssa-math-opts.c (get_constant_one): New.
	(insert_reciprocals): Use it.

2006-04-17  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (free_AT): Delete.
	(remove_AT): Update string ref counts.
	(remove_child_TAG): Don't call free_die.
	(free_die): Delete.
	(break_out_includes): Don't call free_die on DW_TAG_GNU_BINCL
	or DW_TAG_GNU_EINCL.
	(prune_unused_types_walk_attribs): Reset string refcounts.
	(prune_unused_types_update_strings): New.
	(prune_unused_types_prune): Don't make unnecessary stores.  Don't
	call free_die.  Do call prune_unused_types_update_strings.
	(prune_unused_types): Empty debug_str_hash.

2006-04-17  Roger Sayle  <roger@eyesopen.com>

	* expr.c (expand_assignment): Optimize away no-op moves where the
	source and destination are equal and have no side-effects.

2006-04-17  Richard Guenther  <rguenther@suse.de>

	PR target/26826
	* reload.c (push_reload): Guard calls to get_secondary_mem
	for memory subregs.

2006-04-16  Kazu Hirata  <kazu@codesourcery.com>

	* alias.c (reg_base_value, old_reg_base_value): Change the
	type to VEC(rtx,gc) *.
	(REG_BASE_VALUE, find_base_value, record_set,
	init_alias_analysis): Use VEC instead of VARRAY.

	* alias.c (alias_sets): Change the type to
	VEC(alias_set_entry,gc) *.
	(get_alias_set_entry, new_alias_set, record_alias_subset): Use
	VEC instead of VARRAY.
	(last_alias_set): Remove.

	* cgraph.h (cgraph_edge_p): New.
	Update the prototype of cgraph_function_versioning.
	* cgraphunit.c (cgraph_copy_node_for_versioning,
	cgraph_function_versioning): Use VEC instead of VARRAY.
	* ipa-cp.c (ipcp_insert_stage): Likewise.

2006-04-16  Roger Sayle  <roger@eyesopen.com>

	PR target/26961
	* fold-const.c (fold_ternary): When converting "A ? B : C" into either
	"A op B" or "A op C", we may need to convert A to the type of B and C.

2006-04-16  Adam Nemet  <anemet@caviumnetworks.com>

	* target.h (struct gcc_target): Add mode_rep_extended.
	* rtlanal.c (num_sign_bit_copies_in_rep): New global.
	(init_num_sign_bit_copies_in_rep): Initialize it using
	mode_rep_extended.
	(truncate_to_mode): Use it.
	(init_rtlanal): Call init_num_sign_bit_copies_in_rep.
	* targhooks.h (default_mode_rep_extended): Declare it.
	* targhooks.c (default_mode_rep_extended): Define it.
	* target-def.h (TARGET_MODE_REP_EXTENDED): New macro.  Default to
	default_mode_rep_extended.
	(TARGET_INITIALIZER): Include it.
	* doc/tm.texi (Misc): Document it.
	* config/mips/mips.c (TARGET_TRUNCATED_TO_MODE): Override it.
	(mips_truncated_to_mode): New function.

2006-04-16  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/25474
	* expr.c (compress_float_constant): Copy the narrow constant into
	a new pseudo before extending it to its final width.

2006-04-16  Roger Sayle  <roger@eyesopen.com>
	    Andrew Pinski  <pinskia@gcc.gnu.org>
	    Dale Johannesen  <dalej@apple.com>

	PR target/24076
	* config/i386/i386.c (ix86_expand_vector_init_duplicate): Add
	special case code to implement V8HImode and V16QImode with SSE2.

2006-04-15  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_va_start): Ensure all integer constant
	trees are constructed with a suitable tree type.

2006-04-15  Roger Sayle  <roger@eyesopen.com>

	* tree.c (integer_zerop): Ignore TREE_CONSTANT_OVERFLOW.
	(integer_onep): Likewise.
	(integer_all_onesp): Likewise.
	(integer_pow2p): Likewise.
	(integer_nonzerop): Likewise.
	(real_zerop): Likewise.
	(real_onep): Likewise.
	(real_twop): Likewise.
	(real_minus_onep): Likewise.
	(int_size_in_bytes): Likewise.
	(host_integerp): Likewise.

2006-04-15  Kazu Hirata  <kazu@codesourcery.com>

	* cfgcleanup.c, config/dfp-bit.c, expr.c, fold-const.c,
	jump.c, mips-tfile.c, omp-low.c, sched-int.h,
	tree-ssa-loop-prefetch.c, tree-vrp.c: Fix comment typos.

	* tree-ssa-structalias.h (alias_info): Remove num_references.

2006-04-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (output_bb patterns): Shorten long branch alternatives by 4.
	(output_bvb patterns): Likewise.
	* pa.c (output_bb): Use 'bb' insn for long branch case.
	(output_bvb): Likewise use '{bvb|bb}' for long branch case.
	(output_dbra): Use '{comb|cmpb}' for long branch case for alternative
	1.  Correct length operand for alternatives 1 and 2.
	(output_movb): Use '{comb|cmpb}' for long branch case for alternatives
	1, 2 and 3.  Correct length operand for alternatives 1, 2 and 3.

2006-04-14  Roger Sayle  <roger@eyesopen.com>

	* tree-cfg.c (make_edges, make_omp_sections_edges, move_stmt_r,
	is_ctrl_altering_stmt): Reinstate RTH's changes from r112935 that
	were accidentally reverted by r112959.

2006-04-15  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26823
	* except.h (eh_region_outermost): New prototype.
	* except.c (eh_region_outermost): New function.
	* tree-cfg.c (find_outermost_region_in_block): Use it.

2006-04-14  Kazu Hirata  <kazu@codesourcery.com>

	* local-alloc.c (rest_of_handle_local_alloc): Use VEC instead
	of VARRAY.
	* reload1.c (reg_equiv_memory_loc_varray): Rename to
	reg_equiv_memory_loc_vec.  Change the type to VEC(rtx,gc) *.
	(init_reload, reload): Use VEC instead of VARRAY.
	* reload.h: Update the prototype for
	reg_equiv_memory_loc_varray.

2006-04-14  Alexey Starovoytov  <alexey.starovoytov@sun.com>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (emit_and_preserve): Allocate space for the
	register save area.

2006-04-13  Uros Bizjak  <uros@kss-loka.si>

	PR middle-end/27134
	* builtins.c (expand_builtin_int_roundingfn): Use expand_normal()
	to expand fallback builtin function call.

2006-04-14  Alan Modra  <amodra@bigpond.net.au>

	PR middle-end/27095
	* builtins.c: (expand_builtin_memset): Stabilize args before expansion
	and emit libcall here in case the builtin fails.
	(expand_builtin_strcmp): Always emit the libcall here on failure.

2006-04-14  Kazu Hirata  <kazu@codesourcery.com>

	* basic-block.h (REG_BASIC_BLOCK): Use VEC instead of VARRAY.
	* flow.c (reg_n_info): Change the type to
	VEC(reg_info_p,heap) *.
	* regclass.c (allocate_reg_info, free_reg_info): Use VEC
	instead of VARRAY.
	* regs.h (reg_info_p): New.
	(REG_N_REFS, REG_FREQ, REG_N_SETS, REG_N_DEATHS,
	REG_N_CALLS_CROSSED, REG_N_THROWING_CALLS_CROSSED,
	REG_LIVE_LENGTH, REGNO_FIRST_UID, REGNO_LAST_UID): Use VEC
	instead of VARRAY.

2006-04-13  Eric Botcazou  <ebotcazou@adacore.com>

	* params.def (PARAM_MAX_SCHED_READY_INSNS): New parameter,
	defaulting to 100.
	* params.h (MAX_SCHED_READY_INSNS): New macro.
	* haifa-sched.c: (queue_to_ready): Re-queue insns for the next cycle
	past MAX_SCHED_READY_INSNS during the first scheduling pass.
	(schedule_block): Delay insns past MAX_SCHED_READY_INSNS in
	the ready list for 1 cycle during the first scheduling pass.
	* doc/invoke.texi (--param): New parameter max-sched-ready-insns.

2006-04-13  Richard Henderson  <rth@redhat.com>

	PR libgomp/26651
	* gimple-low.c (lower_omp_directive): Remove dead code.
	(lower_stmt): Do nothing except for openmp, except for OMP_PARALLEL.
	* gimplify.c (gimplify_expr): Update for OMP_RETURN, OMP_CONTINUE.
	* omp-low.c (struct omp_region): Move to tree-flow.h.
	(root_omp_region): Export.
	(omp_regions, lookup_omp_region): Remove.
	(determine_parallel_type): Update for struct omp_region changes.
	(dump_omp_region): Dump regions with block numbers.
	(new_omp_region): Take type and block instead of stmt; malloc
	instead of ggc.
	(free_omp_region_1, free_omp_regions): New.
	(expand_parallel_call): Take entry_stmt as argument; update for
	changes to omp_region.
	(remove_exit_barrier): Rewrite to update OMP_RETURN_NOWAIT.
	(remove_exit_barriers): New.
	(expand_omp_parallel): Update for struct omp_region changes.
	(expand_omp_synch): Likewise.
	(expand_omp): Likewise.
	(expand_omp_for_static_nochunk): Likewise; update for OMP_CONTINUE.
	(expand_omp_for_static_chunk): Likewise.
	(expand_omp_for): Likewise.
	(expand_omp_for_generic): Likewise; emit the proper GOMP_loop_end call.
	(expand_omp_sections): Similarly, with GOMP_sections_end.
	(expand_omp_single): New.
	(build_omp_regions_1): Update for OMP_CONTINUE.
	(execute_expand_omp): Call remove_exit_barriers, free_omp_regions.
	(lower_omp_sections): Expand with OMP_CONTINUE, do not collect
	OMP_SECTIONS_SECTIONS.
	(lower_omp_single_simple): Don't emit barrier here.
	(lower_omp_single_copy): Likewise.
	(lower_omp_single): Fix bindings, and lower to straightline now.
	(lower_omp_master, lower_omp_ordered): Likewise.
	(lower_omp_critical): Likewise.
	(lower_omp_for): Likewise.  Emit OMP_CONTINUE.
	* tree-cfg.c (make_edges): Collect an omp_region tree, use it for
	omp edges, free it afterward.
	(make_omp_sections_edges): Remove.
	(is_ctrl_altering_stmt): Don't bother checking flag_openmp.
	(move_stmt_r): Handle OMP_CONTINUE.
	* tree-flow.h (struct omp_region): Move from omp-low.c.  Switch
	statement pointers to basic blocks.  Add type member.
	(root_omp_region, new_omp_region, free_omp_regions): Declare.
	* tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN, OMP_CONTINUE.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree.def (OMP_SECTIONS): Remove OMP_SECTIONS_SECTIONS operand.
	(OMP_RETURN): Rename from OMP_RETURN_EXPR.
	(OMP_CONTINUE): New.
	* tree.h (OMP_DIRECTIVE_P): Add OMP_CONTINUE.
	(OMP_SECTIONS_SECTIONS): Remove.
	(OMP_SECTION_LAST): New.
	(OMP_RETURN_NOWAIT): New.

2006-04-13  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (native_encode_vector, native_interpret_real):
	Correct obvious mistakes in the previous check-in.

2006-04-13  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (native_encode_expr): New function to encode
	the target representation of an INTEGER_CST, REAL_CST, COMPLEX_CST
	or VECTOR_CST into a specified buffer.
	(native_encode_int): New function.
	(native_encode_real): New function.
	(native_encode_complex): New function.
	(native_encode_vector): New function.
	(native_interpret_expr): Inverse of native_encode_expr to convert
	a target representation into an INTEGER_CST, REAL_CST etc...
	(native_interpret_int): New function.
	(native_interpret_real): New function.
	(native_interpret_complex): New function.
	(native_interpret_vector): New function.
	(fold_view_convert_expr): New function to constant fold/evaluate
	a VIEW_CONVERT_EXPR of a suitable constant expression.
	(fold_unary) <VIEW_CONVERT_EXPR>: Call fold_view_convert_expr.
	Change call of build1 to fold_build1 when constructing a
	VIEW_CONVERT_EXPR.

2006-04-13  Paolo Bonzini  <bonzini@gnu.org>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/27006
	* config/rs6000/rs6000.h (EASY_VECTOR_15_ADD_SELF): Require n
	to be even.

2006-04-13  Alan Modra  <amodra@bigpond.net.au>

	PR target/26459
	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't
	optimize to lo_sum for DFmode if !TARGET_FPRS.

2006-04-12  Kazu Hirata  <kazu@codesourcery.com>

	* tree-ssa-alias.c (set_initial_properties, init_alias_info,
	delete_alias_info, compute_flow_sensitive_aliasing,
	group_aliases): Use VEC instead of VARRAY.
	* tree-ssa-structalias.c (update_alias_info): Likewise.
	* tree-ssa-structalias.h (alias_info): Change the type of
	processed_ptrs to VEC(tree,heap) *.

2006-04-12  J"orn Rennecke <joern.rennecke@st.com>

	PR target/27060
	* config/sh/lib1funcs.h: New file, broken out of:
	* config/sh/lib1funcs.asm.
	* config/sh/lib1funcs.h (DR00, DR01, DR20, DR21, DR40, DR41):
	New macros.
	* config/sh/lib1funcs.asm (udivsi3_i4): Use them.
	* config/sh/lib1funcs-Os-4-200.asm: New file.
	* config/sh/embed-elf.h (LIBGCC_SPEC): Use -lgcc-Os-4-200.
	* config/sh/t-sh (OPT_EXTRA_PARTS): New variable.
	(EXTRA_MULTILIB_PARTS): Include it.
	($(T)sdivsi3_i4i-Os-4-200.o): New rule.
	($(T)udivsi3_i4i-Os-4-200.o, $(T)libgcc-Os-4-200.a): Likewise.
	* config/sh/t-superh (EXTRA_MULTILIB_PARTS): Include OPT_EXTRA_PARTS.
	* config/sh/sh.h (OVERRIDE_OPTIONS): Recognize -mdiv=call-table for
	TARGET_SH2.

2006-04-12  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (TREE_SSA_LIVE_H): Add vecprim.h.
	* tree-ssa-live.c (tpa_init, tpa_remove_partition, tpa_delete,
	tpa_compact, root_var_init, type_var_init): Use VEC instead of
	VARRAY.
	* tree-ssa-live.h: Include vecprim.h.
	(tree_partition_associator_d): Change the type of
	first_partition to VEC(int,heap) *.
	(tpa_first_partition): Use VEC instead of VARRAY.

	* Makefile.in (GTFILES): Move functions.h after tree.h.
	* function.c (reset_block_changes, record_block_change,
	check_block_change, free_block_changes): Use VEC instead of
	VARRAY.
	* function.h (function): Change the type of
	ib_boundaries_block to VEC(tree,gc) *.
	* tree-inline.c (copy_cfg_body): Initialize
	ib_boundaries_block to NULL instead of (varray_type) 0.

2006-04-12  Roger Sayle  <roger@eyesopen.com>

	* expr.c (emit_group_store): Correct operand order in call to
	subreg_lowpart_offset.  Always create paradoxical SUBREGs with
	a SUBREG_BYTE of zero.

2006-04-12  Richard Guenther  <rguenther@suse.de>

	* profile.c (compute_branch_probabilities): Remove code
	encapsulated in !ir_type (), which are remanents of the
	removed RTL profiling code.
	* rtl-profile.c: Remove.

2006-04-12  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Update
	magic NULL_RTX comment.
	(function_arg): Store entire fp arg to mem if any part should go
	on stack.
	(rs6000_arg_partial_bytes): Adjust for above change.

2006-04-11  Roger Sayle  <roger@eyesopen.com>

	* dwarf2out.c (output_call_frame_info): Create debug_frame_section
	if it hasn't been initialized by dwarf2out_init.

2006-04-11  John David Anglin  <dava.anglin@nrc-cnrc.gc.ca>

	* pa.md (MAX_12BIT_OFFSET, MAX_17BIT_OFFSET): Define and use new
	symbolic constants in branch patterns.

2006-04-11  Roger Sayle  <roger@eyesopen.com>

	* caller-save.c: #include "addresses.h" after #include "tm_p.h".

2006-04-11  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/27073
	* gcse.c (try_replace_reg): Revert last change.  Continue to search
	for both REG_EQUAL and REG_EQUIV notes, but only perform replacements
	on the former.

2006-04-11  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_slotno) <BLKmode>: Handle
	aggregate types other than record and union types.
	(function_arg): Likewise.
	(function_arg_pass_by_reference): In 64-bit mode, return 0 for
	small arrays.
	(function_value): In 64-bit mode, return objects that require it
	in FP registers.

2006-04-11  Roger Sayle  <roger@eyesopen.com>

	* dwarf2out.c (premark_used_types): Remove problematic prototype.

2006-04-11  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (LINK_COMMAND_SPEC): Move link_gomp after %o.

2006-04-03  Jeff Law  <law@redhat.com>

	PR/27087
	* tree-ssa-copy.c (may_propagate_copy): Test flow sensitive
	alias information too.

2006-04-10  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (gcc-cross): Add $(exeext) to target name.

2006-04-10  Aldy Hernandez  <aldyh@redhat.com>

	PR/21391
	* dwarf2out.c (struct die_struct): Add die_perennial_p field.
	(premark_used_types_helper): New.
	(premark_used_types): New.
	(gen_subprogram_die): Call premark_used_types.
	(prune_unused_types_walk): Do not prune perennial dies.
	* function.c (used_types_insert): New.
	* function.h (struct function): Add used_types_hash field.
	(used_types_insert): Add prototype.
	* Makefile.in (FUNCTION_H): Depend on HASHTAB_H.
	* c-parser.c (c_parser_cast_expression): Save casted types in used
	types hash table.

2006-04-11  Mark Mitchell  <mark@codesourcery.com>

	PR target/26459
	* config/rs6000/e500-double.h (SUB3TARGET_OVERRIDE_OPTIONS): Test
	rs6000_explicit_options.float_gprs.

2006-04-10  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Renamed
	from ix86_expand_vector_init_low_nonzero.  Take an additional
	one_var argument indicating which element is non-zero.  Support
	one_var != 0 for V4SFmode and V4SImode by permuting the result.
	(ix86_expand_vector_init): Call ix86_expand_vector_init_one_nonzero
	with one_var instead of ix86_expand_vector_init_low_nonzero.

2006-04-10  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (tree-into-ssa.o, tree-outof-ssa.o,
	tree-ssa-live.o, tree-ssa-alias.o, function.o, df-problems.o,
	global.o, cfglayout.o, lambda-code.o, reg-stack.o,
	build/genextract.o): Depend on vecprim.h.
	* cfglayout.c, df-problems.c, function.c, genextract.c,
	global.c, lambda-code.c, reg-stack.c, tree-into-ssa.c,
	tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Include
	vecprim.h.
	* vecprim.h: New.

2006-04-10  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (struct dw_attr_struct): Remove dw_attr_next.
	Declare VECs of this type.
	(struct die_struct): Make field die_attr a VEC of dw_attr_struct.
	(remove_children): Delete.
	(add_dwarf_attr): Use VEC routines.
	(add_AT_flag): Update for changes to add_dwarf_attr.
	(add_AT_int): Likewise.
	(add_AT_unsigned): Likewise.
	(add_AT_long_long): Likewise.
	(add_AT_vec): Likewise.
	(add_AT_string): Likewise.
	(add_AT_die_ref): Likewise.
	(add_AT_fde_ref): Likewise.
	(add_AT_loc): Likewise.
	(add_AT_loc_list): Likewise.
	(add_AT_addr): Likewise.
	(add_AT_lbl_id): Likewise.
	(add_AT_lineptr): Likewise.
	(add_AT_macptr): Likewise.
	(add_AT_offset): Likewise.
	(add_AT_range_list): Likewise.
	(get_AT): Use VEC_iterate.
	(remove_AT): Use VEC_ordered_remove.
	(free_die): Fold remove_children into here; have it use VEC_iterate.
	(print_die): Use VEC_iterate on attrs.
	(reverse_die_lists): Don't reverse attr lists.
	(die_checksum): Use VEC_iterate on attrs.
	(same_die_p): Likewise.
	(output_location_lists): Likewise.
	(build_abbrev_table): Likewise.
	(size_of_die): Likewise.
	(unmark_all_dies): Likewise.
	(output_abbrev_section): Likewise.
	(output_die): Likewise.
	(prune_unused_types_walk_attribs): Likewise.

2006-04-10  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (*-*-solaris2*): Point to the configure page.

2006-04-10  Jakub Jelinek  <jakub@redhat.com>

	PR debug/27057
	* dwarf2out.c (is_symbol_die): Return true also for namespaces.

2006-04-09  Roger Sayle  <roger@eyesopen.com>

	* expr.c (store_constructor): Don't bother clearing target if
	we're about to assign a vector to it using vec_init_optab.

2006-04-10 Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (lhs_may_store_to): New function.
	(recalculate_used_alone): Handle LHS of calls.

2006-04-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/27034
	PR target/26508
	* config.gcc (hppa*64*-*-hpux11*): Add 'libgcc_stub.a' to extra_parts.
	* pa64-hpux.h (LIB_SPEC): Correct typo.  Don't append milli.a.
	(LINK_GCC_C_SEQUENCE_SPEC): Define.  Append milli.a here.
	(PA_CXA_FINALIZE_STUB, PA_JV_REGISTERCLASSES_STUB): Delete defines.
	(PA_INIT_FINI_HACK): Rename to PA_CRTBEGIN_HACK.
	(PA_CRTBEGIN_HACK): Ensure __do_global_ctors_aux is placed in text
	section.  Delete PA_CXA_FINALIZE_STUB and PA_JV_REGISTERCLASSES_STUB
	stubs.  Add ".align 8" directives before all ".dword" directives.
	(GTHREAD_USE_WEAK): Revise comment.
	(TARGET_ATTRIBUTE_WEAK): Define.
	* pa/t-pa64 (LIBGCCSTUB_OBJS): Add new rules for stublib.c, rfi-stub.o,
	dfi-stub.o, cxaf-stub.o and jvrc-stub.o.
	* stublib.c: New file.

	PR target/26743
	PR target/11254
	PR target/10274
	* pa.md (cbranch patterns): Revise arguments used in calls to
	output_cbranch, output_bb and output_bvd.  Add long branch length
	attributes.
	(fbranch patterns): Handle long branches.
	(jump): Revise length check.  Revise arguments for output_lbranch call.
	Add long branch length attributes.
	(decrement_and_branch_until_zero): Add long branch length attributes.
	(output_movb, output_parallel_addb and output_parallel_movb patterns):
	Likewise.  Revise arguments for output_parallel_addb and
	output_parallel_movb calls.
	* pa-protos.h (output_cbranch, output_lbranch, output_bb, output_bvb,
	output_parallel_movb and output_parallel_addb): Update prototypes.
	* pa.c (output_cbranch): Revise arguments.  Correct handling of
	nullification in long branches.
	(output_lbranch): Add new argument to control extraction of delay
	instruction.
	(output_bb): Handle long branches.
	(output_bvb, output_dbra, output_movb, output_parallel_movb,
	output_parallel_addb): Likewise.

2006-04-09  Richard Sandiford  <richard@codesourcery.com>

	PR rtl-optimization/27073
	* gcse.c (try_replace_reg): Just propagate into REG_EQUAL notes,
	not REG_EQUIVs.

2006-04-08  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (tree_memory_tag): Add old_used_alone.
	(SMT_OLD_USED_ALONE): New macro.
	* tree-ssa-alias.c (recalculate_used_alone): Stop
	marking things for renaming unnecessarily.

2006-04-08  Kazu Hirata  <kazu@codesourcery.com>

	* builtins.c, config/arm/arm.c, config/i386/cygwin.h,
	config/i386/i386.c, config/ia64/ia64.c, config/s390/fixdfdi.h,
	config/sh/sh.c, config/sh/sh.h, df-scan.c, except.c,
	haifa-sched.c, optabs.c, rtl.h, sched-deps.c, sched-int.h,
	sched-rgn.c, tree-inline.h, tree-ssa-dom.c,
	tree-ssa-loop-prefetch.c, tree-ssa-operands.c,
	tree-vect-patterns.c, tree-vrp.c: Fix comment typos.  Follow
	spelling convensions.
	* config/ia64/ia64.opt, doc/contrib.texi, doc/invoke.texi,
	doc/passes.texi, doc/tm.texi, doc/tree-ssa.texi: Fix comment
	typos.  Follow spelling conventions.

2006-04-07  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_function_arg): Structures are always
	passed on the stack.
	(m32c_init_cumulative_args): When a function returns a structure,
	always pass the pointer to that return area on the stack.
	(m32c_function_arg_advance): Don't increment the parameter number
	if we're processing the returned structure pointer.
	(pushm_info): Reverse order of registers.

2006-04-07  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-ssa-loop-niter.c (inverse, number_of_iterations_ne,
	assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
	number_of_iterations_le, number_of_iterations_cond, find_loop_niter,
	estimate_numbers_of_iterations_loop): Use build_int_cst instead of
	build_int_cst_type.
	* tree-chrec.c (chrec_fold_multiply_poly_poly,
	chrec_fold_multiply): Same.
	* tree-ssa-loop-ivopts.c (strip_offset_1, force_expr_to_var_cost,
	force_expr_to_var_cost): Same.
	* tree-mudflap.c (mf_xform_derefs_1): Same.
	* tree-ssa-loop-prefetch.c (idx_analyze_ref): Same.

2006-04-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_rtx_costs) <CONST_DOUBLE>: Do not
	treat CONST_DOUBLE as INTVAL.  and64_2_operands require an extra
	insn.

2006-04-07  Jan Hubicka  <jh@suse.cz>

	* ipa-inline.c (cgraph_early_inlining): Collect garbage.

2006-04-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26135
	* tree-ssa-copy.c (stmt_may_generate_copy): Handle memory
	loads for store copy-prop.
	(copy_prop_visit_stmt): Likewise.

2006-04-05  Robert Millan  <robertmh@gnu.org>

	* config/i386/linux.h: Add a comment to mark macros that are
	being overriden in config/k*bsd-gnu.h.
	* config/kfreebsd-gnu.h: Redefine GLIBC_DYNAMIC_LINKER instead of
	DYNAMIC_LINKER.
	* config/knetbsd-gnu.h: Ditto.

2006-04-06  Jan Hubicka  <jh@suse.cz>

	PR profile/20815
	PR profile/26399
	* coverage.c (coverage_checksum_string): Reorganize loop to not read
	after buffer.

2006-04-06  Mike Stump  <mrs@apple.com>

	* builtins.c (expand_builtin_longjmp):Use #ifdef instead of #if
	for HAVE_nonlocal_goto to be consistent.
	(expand_builtin_nonlocal_goto): Likewise.
	(expand_builtin_strcmp): Use #ifdef instead of #if
	for HAVE_cmpstrnsi to be consistent.

2006-04-05  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.h (INCOMING_FRAME_SP_OFFSET): Adjust for m16c
	vs m32c.

2006-04-05  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin.c (bfin_legitimate_address_p): Disallow
	got-relative addressing for anything but SImode.

	* config/bfin/lib1funcs.asm (modsi): P1/P2 can be call-clobbered
	even if the calling function doesn't modify them.

2006-04-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26919
	* ipa-inline.c (cgraph_decide_inlining_incrementally): Fix argument
	to cgraph_estimate_size_after_inlining.

2006-04-05  Alan Modra  <amodra@bigpond.net.au>

	* reload.c (find_dummy_reload): Fix typo in 2006-04-03 change.

2006-04-05  Sebastian Pop  <pop@cri.ensmp.fr>

	PR tree-optimization/26996
	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Don't analyze
	VECTOR_TYPE variables.

2006-04-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26763
	* fold-const.c (fold_comparison): Move folding of
	PTR + CST CMP PTR + CST ...
	(fold_binary): ... here.  Fold only for EQ_EXPR and NE_EXPR.

2006-04-05  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/install.texi (Prerequisites): Refine some wording on
	bootstrapping and ksh.
	Move the version numbers of DejaGnu here from the testing section
	and fix casing of names.
	Fix markup and clarify wording for autogen requirements.
	Refer to GCJ instead of just java.
	Refer to SVN instead of CVS.
	Describe diffutils as useful instead of necessary.
	(Downloading the source): Refer to SVN instead of CVS.
	Adjust a link to our web site accordingly.
	(Configuration): Fix casing of Bison.
	(Building): Refer to SVN instead of CVS.
	Fix a sentence on the use of Bison and remove duplicate (and
	incorrect) version number of Bison requirement.
	Remove one redundant list of packages needed for building.
	(Specific): Avoid reference to CVS.

2006-04-04  Eric Christopher  <echristo@apple.com>

	* config/rs6000/rs6000.c (TARGET_MS_BITFIELD_LAYOUT_P): Define.
	(TARGET_USE_MS_BITFIELD_LAYOUT): Ditto.
	(rs6000_handle_struct_attribute): New.
	(rs6000_ms_bitfield_layout_p): Ditto.

2006-04-04  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin-crt3.c (atexit): Pass &__dso_handle rather than
	NULL for dso parameter to atexit_common.

2006-04-04  Eric Christopher  <echristo@apple.com>

	* config/i386/i386.c (machopic_output_stub): Output \t
	between instructions and operands.

2006-04-04  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (num_insns_constant_wide): Change
	satisfies_constraint_[IL] to explicit tests on value.

2006-04-04  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
	set_nb_iterations_in_loop): Use build_int_cst instead of
	build_int_cst_type.
	* tree-data-ref.c (can_use_analyze_subscript_affine_affine): Use
	build_int_cst instead of convert.

2006-04-04  Carlos O'Donell  <carlos@codesourcery.com>

	* doc/tm.texi (TARGET_STRUCT_VALUE_RTX): Document
	new value 2 for incoming.
	* function.c (expand_function_start): Call struct_value_rtx
	with incoming as 2.
	* config/sparc/sparc.md: Comment updated_return.
	* config/sparc/sparc.opt: Add -mstd-struct-return option.
	* config/sparc/sparc.c (sparc_struct_value_rtx): Use standard
	struct return if sparc_std_struct_return and incoming is 2.
	(print_operand): Do not adjust return if
	sparc_std_struct_return.

2006-04-04  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_sprintf): Use fold_convert instead of
	convert in the middle-end.
	* expr.c (store_expr, store_constructor, get_inner_reference,
	expand_expr_real_1, string_constant, try_casesi, try_tablejump):
	Likewise.
	* tree.c (build_range_type): Likewise.

2006-04-04  Tom Tromey  <tromey@redhat.com>

	* doc/install.texi (Prerequisites): Mention jar.

2006-04-04  Daniel Berlin  <dberlin@dberlin.org>

	* doc/tree-ssa.texi (Preserving the virtual ssa form): New
	subsection.

2006-04-04  Matthias Klose  <doko@debian.org>

	* Makefile.in (unprotoize.o): Same dependencies as for protoize.o.

	PR bootstrap/26764
	PR bootstrap/27334
	* Makefile.in (s-macro_list): Conform to POSIX rules in single quoted
	strings.

2006-04-03  Geoffrey Keating  <geoffk@apple.com>

	* doc/extend.texi (Function Attributes): Rewrite visibility
	attribute documentation.
	* doc/invoke.texi (C++ Dialect Options): Rewrite
	-fvisibility-inlines-hidden documentation to describe something
	entirely different, although in practise compatible.
	(Code Gen Options): Warn about system headers in -fvisibility=
	documentation.

	* doc/extend.texi (Other Builtins): Document that
	__builtin_nan is a compile-time constant only when its argument
	is valid.

2006-04-03  Adam Nemet  <anemet@caviumnetworks.com>

	* simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: When
	trying to remove TRUNCATE check if all bits outside the new mode
	are identical to the sign bit.

2006-04-03  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (propagate_rhs_into_lhs): Avoid useless folding
	and operand scanning in some common cases.

2006-04-03  Paolo Bonzini  <bonzini@gnu.org>
	    Dale Johannesen  <dalej@apple.com>

	PR target/19653
	* regclass.c (struct reg_pref): Update documentation.
	(regclass): Set prefclass to NO_REGS if memory is the best option.
	(record_reg_classes): Cope with a prefclass set to NO_REGS.
	* reload.c (find_reloads): Take PREFERRED_OUTPUT_RELOAD_CLASS
	into account.  For non-registers, equate an empty preferred
	reload class to a `!' in the constraint; move the if clause to
	do so after those that reject the insn.
	(push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally
	return NO_REGS.
	(find_dummy_reload): Likewise.
	* doc/tm.texi (Register Classes): Document what it means
	if PREFERRED_*_RELOAD_CLASS return NO_REGS.
	* config/i386/i386.c (ix86_preferred_reload_class): Force
	using SSE registers (and return NO_REGS for floating-point
	constants) if math is done with SSE.
	(ix86_preferred_output_reload_class): New.
	* config/i386/i386-protos.h (ix86_preferred_output_reload_class): New.
	* config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New.
	* config/i386/i386.md: Remove # register preferences.

2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>

	PR bootstrap/26992
	* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
	chrec_is_positive, set_nb_iterations_in_loop): Use a variable for
	the type of nb_iter.
	(instantiate_parameters_1): Convert the operands before calling
	chrec_fold_minus, chrec_fold_plus, or chrec_fold_multiply.
	* tree-data-ref.c (can_use_analyze_subscript_affine_affine): Same.

2006-04-02  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (dummy_object): Use build_int_cst instead of convert.
	* tree-ssa-ccp.c (maybe_fold_stmt_addition): Use fold_convert
	instead of convert.
	* dojump.c (do_jump): Likewise.
	* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE): Likewise.
	* gimplify.c (gimple_boolify, gimplify_init_constructor,
	gimplify_boolean_expr): Likewise.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* varasm.c (array_size_for_constructor): Likewise.
	* tree-object-size.c (compute_object_offset): Likewise.

2006-04-02  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26977
	* expr.c (emit_group_store): Check whether simplify_gen_subreg returns
	NULL_RTX, indicating it couldn't create a valid paradoxical subreg.

2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>

	PR tree-optimization/26939
	* tree-chrec.c (chrec_merge): Use eq_evolutions_p.

2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-scalar-evolution.c (add_to_evolution_1): Pass an extra argument
	at_stmt.  Convert the type of operands before calling
	build_polynomial_chrec.
	(add_to_evolution): Pass an extra argument at_stmt.  Adjust the call to
	add_to_evolution_1.
	(follow_ssa_edge_in_rhs): Adjust call to add_to_evolution.
	(instantiate_parameters_1): Convert the type of operands before calling
	build_polynomial_chrec.
	* tree-chrec.c (chrec_fold_poly_cst, chrec_fold_plus_poly_poly,
	chrec_fold_multiply_poly_poly, chrec_replace_initial_condition,
	reset_evolution_in_loop): Insert asserts to check the types of the
	operands.
	(chrec_type): Moved...
	(eq_evolutions_p): Use operand_equal_p.
	* tree-chrec.h (build_polynomial_chrec): Insert an assert to check
	the types of the operands.
	(chrec_type): ...here.
	* tree-data-ref.c (create_data_ref): Convert the operands before
	calling chrec_replace_initial_condition.
	(same_access_functions, analyze_subscript_affine_affine,
	analyze_miv_subscript, all_chrecs_equal_p): Use eq_evolutions_p.
	(compute_subscript_distance, analyze_ziv_subscript,
	analyze_siv_subscript_cst_affine, compute_overlap_steps_for_affine_1_2,
	analyze_miv_subscript): Convert the operands before calling
	chrec_fold_minus or chrec_fold_plus.

2006-04-02  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.c (compute_all_dependences): Use a pointer to
	the dependence_relations vector.
	(compute_data_dependences_for_loop): Adjust call to
	compute_all_dependences.

2006-04-01  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_scan_omp_clauses) <OMP_CLAUSE_IF>: Call
	gimple_boolify on the condition before calling gimplify_expr.

2006-03-31  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib1funcs.asm: Rename abi_entry/abi_return macros
	to leaf_entry/leaf_return.  Change leaf_entry to add 16 bytes to
	the frame size.  Update to use the new macros.
	* config/xtensa/ieee754-sf.S: Use new leaf_entry/leaf_return macros.
	* config/xtensa/ieee754-df.S: Likewise.

2006-03-31  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (make_ctrl_stmt_edges, make_exit_edges): Merge into...
	(make_edges): ... here.  Control fallthru creation with a local
	variable.  Do not play with fake edges.
	(make_omp_sections_edges): Don't set EDGE_ABNORMAL.
	(make_goto_expr_edges): Don't play with fake edges.  Make for_call
	a boolean.

2006-04-01  Joseph S. Myers  <joseph@codesourcery.com>

	* dwarf2.h (DW64_CIE_ID): Define.
	* dwarf2out.c (DWARF_CIE_ID): Define.
	(output_call_frame_info): Output 0xffffffff before standard 8-byte
	length header.  Use DWARF_CIE_ID.
	(value_format): Use DW_FORM_data4 or DW_FORM_data8 for
	dw_val_class_loc_list depending on DWARF_OFFSET_SIZE.

2006-03-31  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux-atomic.asm: New file.
	* config/sh/t-linux (LIB2FUNCS_EXTRA): Add linux-atomic.asm.

2006-03-31  DJ Delorie  <dj@redhat.com>

	* config/m32c/cond.md: Set condition flags properly throughout.
	* config/m32c/minmax.md: Likewise.
	* config/m32c/prologue.md: Likewise.
	* config/m32c/bitops.md: Likewise.
	* config/m32c/muldiv.md: Likewise.
	* config/m32c/mov.md: Likewise.
	* config/m32c/addsub.md: Likewise.
	* config/m32c/m32c.md: Likewise.
	* config/m32c/jump.md: Likewise.
	* config/m32c/shift.md: Likewise.

	* config/m32c/cond.md (cmp<mode>): Call m32c_output_compare to
	conditionally output the pattern for this.
	* config/m32c/m32c.c (flags_needed_for_conditional): New.
	(m32c_compare_redundant): New.
	(m32c_output_compare): New.
	* config/m32c/m32c-protos.h (m32c_output_compare): New.

	* config/m32c/m32c.c (m32c_prepare_shift): Fix logic to clobber
	dest, not src.  Allow other 4-byte modes.

2006-03-30  Denis Chertykov  <denisc@overta.ru>

	* doc/md.texi: Refer to avr/constraints.md instead of
	avr/avr.h.

2006-03-30  Roger Sayle  <roger@eyesopen.com>

	* expr.c (emit_group_store): Make BYTEPOS a HOST_WIDE_INT to
	signed vs. unsigned comparison failures on some hosts.

2006-03-31  Alan Modra  <amodra@bigpond.net.au>

	PR target/26459
	* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Limit 2003-12-08
	change to FLOAT_REGS.

	* config/rs6000/rs6000.c (rs6000_explicit_options): Add ieee.
	(rs6000_override_options): Use it.
	(rs6000_handle_option): Set it.  Set rs6000_explicit_options.abi
	only for -mabi=spe/no-spe and -mabi=altivec.

2006-03-30  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_COMMAND_SPEC): Don't try to protect %S with
	!Zdynamiclib.

2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Rename docdir to gcc_docdir.

2006-03-30  Roger Sayle  <roger@eyesopen.com>

	PR target/17959
	* expr.c (emit_group_store): Optimize group stores into a pseudo
	register by using a paradoxical subreg to initialize the destination
	if the first or last member of the group specifies a "low part".

2006-03-30  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR target/26734
	* rtl.def (DEPS_LIST): Change type of the second operand to 'int'.
	* target.h (struct gcc_target.speculate_insn): Change type of the
	second parameter to 'int'.
	* lists.c (alloc_DEPS_LIST): Change signature.  Update reference to
	the second operand of the DEPS_LIST.
	(copy_DEPS_LIST_list): Update reference	to the second operand of the
	DEPS_LIST.
	* rtl.h (alloc_DEPS_LIST): Update signature.
	* sched-int.h (ds_t): Change typedef to 'int'.
	(DEP_STATUS, BITS_PER_DEP_STATUS): Update.

2006-03-30  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (try_ready): Change condition to restore
	non-speculative pattern	of the instruction.
	(process_insn_depend_be_in_spec): Code to keep probability of the
	speculative dependence non-decreasing.

2006-03-30  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.c (single_move_for_strmov): Renamed to...
	(single_move_for_movmem): ... this. Also change all uses.
	(bfin_expand_strmov): Renamed to...
	(bfin_expand_movmem): ... this. Also change all uses.
	* config/bfin/bfin.md (movstrsi): Renamed to...
	(movstrsi): ...this.

2006-03-30  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/26830

	* tree-ssa-copy.c (copy_prop_visit_assignment): Do not check loop depth.
	(copy_prop_visit_stmt): Remove write-only variable ann.
	(init_copy_prop): Check variable loop depth here.  Do not simulate
	memory-tag and virtual operand PHIs except for store copy prop.

2006-03-30  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c: Remove builtins for SSE2 ABI intrinsic
	variants with double arguments.

2006-03-29  David Edelsohn  <edelsohn@gnu.org>

	* genpreds.c (write_tm_constrs_h): Delete variable p.
	* genconditions.c (write_header): Add tm-constrs.h to included
	headers.
	* genpeep.c (main): Add toplev.h to included headers.
	* Makefile.in (build/gencondmd.o): Add tm-constrs.h dependency.
	(build/genpeep.o): Add toplev.h dependency.
	* config/rs6000/constraints.md: Add "W" constraint.

2006-03-29  Roger Sayle  <roger@eyesopen.com>

	* stor-layout.c (mode_for_size_tree): Remove restiction on type
	sizes by correctly testing whether the size fits a host integer.
	(initialize_sizetypes): Use set_min_and_max_values_for_integral_type
	to correctly set TYPE_MIN_VALUE and TYPE_MAX_VALUE to the full
	SImode range for the default sizetype and bitsizetype.

2006-03-29  Roger Sayle  <roger@eyesopen.com>

	* convert.c (convert_to_pointer): Preserve the TREE_OVERFLOW
	and TREE_CONSTANT_OVERFLOW bits of the argument.  Return
	quickly if the argument is already of the correct type.
	Call fold_build1 instead of build1.  Tidy up blank lines.

2006-03-29  David Edelsohn  <edelsohn@gnu.org>

	* genemit.c (main): Add tm-constrs.h to included headers.
	* genoutput.c (output_prologue): Add tm-constrs.h to included headers.
	* genpeep.c (main): Add tm-constrs.h to included headers.
	* genpreds.c (write_satisfies_constraint_fns): Rename to ...
	(write_tm_constrs_h): this and write complete file.
	(write_tm_preds_h): Do not emit satisfies_constraint fns.
	(write_insn_preds_c): Add tm-constrs.h to included headers.
	(gen_constrs): New variable.
	(parse_option): Parse "-c".
	(main): Invoke write_tm_constrs_h.
	* genrecog.c (write_header): Add tm-constrs.h to included headers.
	* Makefile.in (STAGECOPYSTUFF): Add tm-constrs.h.
	(object_out_file): Add tm-constrs.h dependency.
	(insn-emit.o): Same.
	(insn-output.o): Same.
	(insn-peep.o): Same.
	(insn-preds.o): Same.
	(insn-recog.o): Same.
	(tm-constsr.h): New target.
	(s-constrs-h): New target.

	* config/rs6000/constraints.md: New file.
	* config/rs6000/rs6000.c: Include tm-constrs.h.
	(num_insn_constant_wide): Convert to satisfies_constraint.
	(rs6000_rtx_costs): Convert to satisfies_constraint.
	* config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Delete.
	(CONST_OK_FOR_LETTER_P): Delete.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
	(EXTRA_CONSTRAINT): Delete.
	(EXTRA_MEMORY_CONSTRAINT): Delete.
	(EXTRA_ADDRESS_CONSTRAINT): Delete.
	* config/rs6000/predicates.md: Convert to satisfies_constraint.
	* config/rs6000/rs6000.md: Include constraints.md.  Convert to
	satisfies_constraint.

	* config/i386/i386.c: Include tm-constrs.h.

2006-03-29  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-loop-linear.c (compute_data_dependences_for_loop): Adjust calls.
	* tree-data-ref.c (find_data_references_in_loop,
	compute_data_dependences_for_loop): Use pointers to VEC.
	(analyze_all_data_dependences): Adjust calls.
	* tree-data-ref.h (find_data_references_in_loop,
	compute_data_dependences_for_loop): Adjust declarations.
	* tree-vect-analyze.c (vect_analyze_data_refs): Adjust call to
	compute_data_dependences_for_loop.

2006-03-29  Paul Brook  <paul@codesourcery.com>

	* config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives.
	(movdf_vfp): Ditto.

2006-03-29  Sebastian Pop  <pop@cri.ensmp.fr>

	PR tree-optimization/26859
	* tree-ssa-loop-niter.c (infer_loop_bounds_from_undefined): Avoid
	division by zero.
	(convert_step): Remove TREE_OVERFLOW and TREE_CONSTANT_OVERFLOW flags
	for the step after fold_convert.

2006-03-29  Paul Brook  <paul@codesourcery.com>

	* reload1.c (choose_reload_regs): Check for all RTX_AUTOINC operators.
	(inc_for_reload): Handle PRE_MODIFY and POST_MODIFY addresses.

2006-03-29  Paul Brook  <paul@codesourcery.com>

	PR middle-end/23623
	* targhooks.c (default_narrow_bitfield): New fuction.
	* targhooks.h (default_narrow_bitfield): add prototype.
	* target.h (gcc_target): Add narrow_volatile_bitfield.
	* target-def.h (TARGET_NARROW_VOLATILE_BITFIELD): Define.
	* stor-layout.c (get_best_mode): Use targetm.narrow_volatile_bitfield.
	* doc/tm.texi: Document TARGET_NARROW_VOLATILE_BITFIELDS.
	* config/arm/arm.c (TARGET_NARROW_VOLATILE_BITFIELD): Define.

2006-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config.gcc (s390-*-linux-*, s390x-*-linux*): Add t-dfprules to
	tmake_file.
	* config/s390/s390.c (S390_scalar_mode_supported_p): New function.
	(NR_C_MODES): Add TDmode, DDmode and SDmode.
	(s390_output_pool_entry, ): Accept MODE_DECIMAL_FLOAT.
	(s390_hard_regno_mode_ok): Disallow TDmode in integer regs.
	(s390_function_arg_float): Allow SDmode and DDmode values to be
	passed in floating point registers.
	(s390_function_arg_integer, s390_function_value): Replace MODE_FLOAT
	check with SCALAR_FLOAT_MODE_P.
	(TARGET_SCALAR_MODE_SUPPORTED_P): Define target macro.

2006-03-28  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/25985
	* tree-ssa-loop-niter.c (number_of_iterations_le,
	number_of_iterations_ne): Make comments more precise.
	(number_of_iterations_cond): Add only_exit argument.  Use the
	fact that signed variables do not overflow only when only_exit
	is true.
	(loop_only_exit_p): New.
	(number_of_iterations_exit): Pass result of loop_only_exit_p to
	number_of_iterations_cond.

2006-03-28  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/26643
	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Do not handle
	bit_field_refs.

2006-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (udivsi3_i4_int): Clobber MACH_REG and MACL_REG.
	(divsi3_i4_int): Likewise.

2006-03-28  Roger Sayle  <roger@eyesopen.com>

	* expr.c (emit_group_store): Only create a new pseudo reg if the
	quantity it needs to hold isn't already a suitable pseudo.

2006-03-28  Jeff Law  <law@redhat.com>

	* timevar.def (TV_TREE_PHI_CPROP): New timevar.
	* tree-ssa-dom.c (pass_phi_only_cprop): Use it.

2006-03-28  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_binary) <BIT_XOR_EXPR>: Fold (X & Y) ^ Y as
	the equivalent ~X & Y, and the symmetry related transformations.
	(fold_binary) <BIT_AND_EXPR>: Similarly, fold (X ^ Y) & Y as
	~X & Y, and symmetry related transforms.

2006-03-28  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	Revert my 2006-03-27 patches.

2006-03-28  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_unary) <NOP_EXPR>: Fold (T1)(~(T2)X) as
	~(T1)X, when T1 and T2 are integer types of the same precision
	and (T2)X isn't an extension.

2006-03-28  Jeff Law  <law@redhat.com>

	PR tree-optimization/26796
	* tree-ssa-dom.c (propagate_rhs_into_lhs): Queue blocks which
	need EH edge cleanups rather than purging them immediately.
	(eliminate_degenerate_phis): Handle queued EH cleanups.

2006-03-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE
	from parent_var.

2006-03-27  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/22524
	* fold-const.c (fold_binary) <MINUS_EXPR>: Call fold_convert to
	cast BIT_NOT_EXPR operand to the correct type.

2006-03-27  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-loop-linear.c: Don't include varray.h.
	(gather_interchange_stats, try_interchange_loops,
	linear_transform_loops): Use VEC instead of VARRAY.
	* lambda-mat.c: Don't include varray.h.
	* tree-chrec.c: Same.
	* lambda-trans.c: Same.
	* tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info): Use
	VEC instead of VARRAY.
	* tree-vectorizer.h: Idem.
	* tree-data-ref.c (dump_data_references,
	dump_data_dependence_relations, dump_dist_dir_vectors, dump_ddrs,
	initialize_data_dependence_relation, finalize_ddr_dependent,
	compute_all_dependences, find_data_references_in_loop,
	compute_data_dependences_for_loop, analyze_all_data_dependences,
	free_dependence_relation, free_dependence_relations,
	free_data_refs): Idem.
	* tree-data-ref.h (data_reference_p, subscript_p): New.
	(data_dependence_relation, DDR_SUBSCRIPT, DDR_NUM_SUBSCRIPTS): Use
	VEC instead of VARRAY.
	(DDR_SUBSCRIPTS_VECTOR_INIT): Removed.
	(find_data_references_in_loop, compute_data_dependences_for_loop,
	dump_ddrs, dump_dist_dir_vectors, dump_data_references,
	dump_data_dependence_relations, free_dependence_relations,
	free_data_refs): Adjust declaration.
	(lambda_transform_legal_p): Move declaration here...
	* tree-vect-analyze.c (vect_analyze_data_ref_dependences,
	vect_compute_data_refs_alignment, vect_verify_datarefs_alignment,
	vect_enhance_data_refs_alignment, vect_analyze_data_ref_accesses,
	vect_analyze_data_refs): Use VEC instead of VARRAY.
	* lambda.h (lambda_transform_legal_p): ...from here.
	* lambda-code.c (lambda_transform_legal_p): Use VEC instead of VARRAY.
	* tree-vect-transform.c (vect_update_inits_of_drs): Idem.
	* Makefile.in (tree-loop-linear.o, lambda-mat.o, lambda-trans.o,
	tree-chrec.o): Don't depend on VARRAY_H.

2006-03-27  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* rtl.def (Copyright): Update date.
	(DEPS_LIST): Change type of the second operand to 'int'.
	* target.h (Copyright): Update date.
	(struct gcc_target.speculate_insn): Change type of the second parameter
	to 'int'.
	* lists.c (Copyright): Update date.
	(alloc_DEPS_LIST): Change signature.  Update reference to the second
	operand of the DEPS_LIST.
	(copy_DEPS_LIST_list): Update reference	to the second operand of the
	DEPS_LIST.
	* rtl.h (Copyright): Update date.
	(alloc_DEPS_LIST): Update signature.
	* sched-int.h (Copyright): Update date.
	(ds_t): Change typedef to 'int'.
	(DEP_STATUS, BITS_PER_DEP_STATUS): Update.

2006-03-27  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (Copyright): Update date.
	(try_ready): Change condition to restore non-speculative pattern
	of the instruction.
	(process_insn_depend_be_in_spec): Code to keep probability of the
	speculative dependence non-decreasing.

2006-03-27  Bernd Schmidt  <bernd.schmidt@analog.com>

	* regrename.c (replace_oldest_value_addr): Initialize a variable to
	shut up the compiler.

2006-03-27  J"orn Rennecke <joern.rennecke@st.com>

	* config/sh/t-sh ($(T)libic_invalidate_array_4-100.a): Fix rule
	to use lib prefix for target.
	($(T)libic_invalidate_array_4-200.a): Likewise.
	($(T)libic_invalidate_array_4a.a): Likewise.

2006-03-27  Andrew Stubbs <andrew.stubbs@st.com>
	    J"orn Rennecke <joern.rennecke@st.com>

	* superh.opt: New file.
	* sh.c (boardtype, osruntime): Remove.
	* superh.h (SUBTARGET_OPTIONS): Remove.
	* config.gcc (sh*-superh-elf): Add sh/superh.opt to extra_options.

	* config.gcc (sh*-*-*): Don't use c-c ranges for tr.  Quote sed
	arguments with ^ and/or [].

	* config.gcc (sh-*-*): Add quoting to account for quirk of
	Solaris /bin/sh.
	Replace == with = in enable_incomplete_targets test.

	* config/sh/superh.h (SUBTARGET_LINK_SPEC): Replace LITTLE_ENDIAN_BIT
	with MASK_LITTLE_ENDIAN.

	* config.gcc (sh*-superh-elf): Add sh/superh.h to tm_file.
	* config/sh/sh.opt: Added to some comments.
	* config/sh/superh.h: Removed some chaff.

	* config/sh/sh.opt: Add m4-[1234]00* options.
	* config/sh/sh.c (sh_handle_option): Likewise.
	* config/sh/t-sh (IC_EXTRA_PARTS, EXTRA_MULTILIB_PARTS): Define.
	(ic_invalidate_array_4-100.o): New rule.
	($(T)libic_invalidate_array_4-100.a): Likewise.
	(ic_invalidate_array_4-200.o): Likewise.
	($(T)libic_invalidate_array_4-200.a): Likewise.
	(ic_invalidate_array_4a.o): Likewise.
	($(T)libic_invalidate_array_4a.a): Likewise.
	* config/sh/t-elf (EXTRA_MULTILIB_PARTS): Add IC_EXTRA_PARTS.
	* config/sh/embed-elf.h (LIBGCC_SPEC): Add clauses for m4-100*,
	m4-200*, and m4a*.
	* config/sh/crt1.asm: Merged in profiling code.
	* config/sh/superh.h (STARTFILE_SPEC): Override.
	* config/sh/t-superh: Override EXTRA_MULTILIB_PARTS.
	Add rules for $(T)crt1-mmu.o, $(T)gcrt1-mmu.o and $(T)gcrt1.o.
	* config.gcc (sh*-superh-elf): Add t-superh to tmake_file.

	* t-sh (MULTILIB_MATCHES): Add sh4-[1245]00* variants.
	* config/sh/t-superh: Removed now-redundant MULTILIB_OPTIONS /
	MULTILIB_DIRNAMES / MULTILIB_MATCHES settings.

	* sh.opt (mpretend-cmove): New option.
	* sh.h (OPERRIDE_OPTIONS): Switch it off if not TARGET_SH1.
	* sh.md (movsicc_t_false, movsicc_t_tru): New patterns.
	(movsicc): Add TARGET_PRETEND_CMOVE code.

2006-03-27  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390-protos.h (s390_hard_regno_mode_ok,
	s390_class_max_nregs): New function prototypes.
	* config/s390/s390.c (REGNO_PAIR_OK): New macro.
	(s390_hard_regno_mode_ok, s390_class_max_nregs): New functions.
	* config/s390/s390.h (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK,
	CLASS_MAX_NREGS): Macro bodies replaced by function calls.

2006-03-26  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (add_location_or_const_value_attribute): Call
	tree_add_const_value_attribute if nothing else works.
	(reference_to_unused): New.
	(rtl_for_decl_init): Use reference_to_unused to decide whether
	to output an initializer.

2006-03-27  Alan Modra  <amodra@bigpond.net.au>

	PR target/26459
	* config/rs6000/rs6000.md (DF reg move peephole): Prevent
	peephole removing spe frob_di_df_2.

2006-03-26  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.c: Rename DDR_SIZE_VECT to DDR_NB_LOOPS.
	(subscript_dependence_tester_1): Declared.
	(print_dir_vectors, print_dist_vectors): New.
	(debug_data_dependence_relation): New.
	(dump_data_dependence_relation): Print more details.
	(initialize_data_dependence_relation): Initialize DDR_LOOP_NEST.
	(analyze_subscript_affine_affine): Don't ICE when gcd_alpha_beta is 0.
	(save_dist_v, save_dir_v, add_outer_distances,
	build_classic_dist_vector_1): New.
	(build_classic_dist_vector): Rewrite to work on DDR_LOOP_NEST.
	Don't test for lambda_vector_lexico_pos.
	(same_access_functions, add_multivariate_self_dist,
	add_other_self_distances, dir_from_dist): New.
	(build_classic_dir_vector): Replace implementation almost identical to
	build_classic_dist_vector with a walk of DDR_DIST_VECTS with a call to
	dir_from_dist.
	(subscript_dependence_tester_1): New.
	(subscript_dependence_tester): Handle the lexicographically negative
	distance vectors by recomputing the dependence relation.
	(compute_affine_dependence): Remove parameter loop_nest_depth.
	(compute_self_dependence): Don't call compute_subscript_distance.
	(compute_all_dependences): Remove parameters nb_loops, loop_nest_depth.
	Add a parameter for the loop_nest.
	(find_loop_nest_1, find_loop_nest): New.
	(compute_data_dependences_for_loop): Compute the loop nest, and give
	up if the nest is not well formed.
	* tree-data-ref.h (loop_p): New.
	(struct data_dependence_relation): Replace size_vect field with
	loop_nest, a vec of loops.
	(DDR_SIZE_VECT): Renamed DDR_NB_LOOPS.
	(DDR_LOOP_NEST): New.
	(print_dir_vectors, print_dist_vectors,
	debug_data_dependence_relation): Declared.
	(index_in_loop_nest): New.
	* tree-vect-analyze.c (vect_analyze_data_ref_dependence): Use
	DDR_LOOP_NEST and index_in_loop_nest to determine the dependence
	distance.

2006-03-25  Adam Nemet  <anemet@caviumnetworks.com>

	* simplify-rtx.c (simplify_relational_operation): Call
	simplify_relational_operation_1 even if mode is VOIDmode.

2006-03-25  Daniel Berlin  <dberlin@dberlin.org>

	PR tree-optimization/26804
	* tree.h (DECL_CALL_CLOBBERED): New macro.
	(tree_decl_common): Add call_clobbered_flag.
	* tree-flow-inline.h (is_call_clobbered): Use DECL_CALL_CLOBBERED.
	(mark_call_clobbered): Set DECL_CALL_CLOBBERED.
	(clear_call_clobbered): Clear DECL_CALL_CLOBBERED.
	(mark_non_addressable): Ditto.
	* tree-ssa.c (verify_call_clobbered): New function.
	(verify_alias_info): Use it.
	* tree-pass.h (pass_reset_cc_flags): New prototype.
	* tree-ssa-alias.c (pass_reset_cc_flags): New structure.
	(reset_cc_flags): New function.
	* passes.c (init_optimization_passes): Call reset_cc_flags after
	initializing referenced_vars.

2006-03-25  Uros Bizjak  <uros@kss-loka.si>
	    Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26717
	* fold-const.c (fold_binary) [RDIV_EXPR]: Do not optimize A / A
	to 1.0 for non-real operands. Implement A / A optimization for
	complex operands.

2006-03-25  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (size_cost): Correct the comment for
	cost of storing fp registers.
	(i386_cost): Likewise.
	(i486_cost): Likewise.
	(pentium_cost): Likewise.
	(pentiumpro_cost): Likewise.
	(k6_cost): Likewise.
	(athlon_cost): Likewise.
	(k8_cost): Likewise.
	(pentium4_cost): Likewise.
	(nocona_cost): Likewise.
	(generic64_cost): Likewise.
	(generic32_cost): Likewise.

2006-03-24  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.h (extra_constraint): Delete.
	(extra_constraint_Q): New declaration.
	* config/avr/constraints.md: New file.
	* config/avr/avr.md: Include it.
	(REG_X, REG_Y, REG_Z, REG_W): New constants.
	(TMP_REGNO, ZERO_REGNO): Likewise.
	(UNSPEC_STRLEN, UNSPEC_INDEX_JMP): Likewise.
	* config/avr/avr.c (avr_reg_class_from_letter): Delete.
	(extra_constraint): Delete.
	(extra_constraint_Q): Test for memory constraint 'Q'.
	* config/avr/avr.h (REG_X,REG_Y,REG_Z,REG_W): Delete.
	(REG_CLASS_FROM_LETTER): Delete.
	(CONST_OK_FOR_LETTER_P): Delete.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
	(EXTRA_CONSTRAINT): Delete.
	(TMP_REGNO): Delete.
	(ZERO_REGNO): Delete.

2006-03-24  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (propagate_rhs_into_lhs): Don't call update_stmt
	directly.  Call mark_new_vars_to_rename slightly earlier.

2006-03-24  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (is_c_family): Understand new DWARF3 language types.
	(is_cxx): Likewise.
	(gen_compile_unit_die): Use new language types for Objective-C and
	Objective-C++.
	(dwarf2out_decl): Use is_cxx rather than testing explicitly against
	DW_LANG_C_plus_plus.

	PR 26793
	* config/t-darwin (crt3.o): Work around bug 26840.
	* config/darwin-crt3.c: Rewrite.
	* config/darwin.h (STARTFILE_SPEC): Don't use -l for crt3.o.

2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>

	* doc/invoke.texi: Document -femit-class-debug-always
	* common.opt: Add -femit-class-debug-always.

2006-03-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_decompose_address): Allow SImode for
	index and base register.
	(s390_expand_plug_operand, legitimate_address_p, preferred_la_operand_p,
	print_operand_address, print_operand): Replaced REG_OK_FOR_BASE_STRICT_P
	with REGNO_OK_FOR_BASE_P and REG_OK_FOR_INDEX_STRICT_P with
	REGNO_OK_FOR_INDEX_P.
	* config/s390/s390.h (REGNO_OK_FOR_INDEX_P): Replaced check with
	ADDR_REGNO_P.
	(REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P,
	REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P, REG_OK_FOR_INDEX_P,
	REG_OK_FOR_BASE_P): Definitions removed.

2006-03-24  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26611
	* gimplify.c (gimplify_bind_expr): Only call omp_add_variable on
	non-global variables that don't have DECL_SEEN_IN_BIND_EXPR_P bit
	set yet or weren't marked as local yet.

2006-03-24  Bernd Schmidt  <bernd.schmidt@analog.com>

	* regrename.c (scan_rtx_address): Initialize a variable to shut up
	the compiler.

2006-03-24  Eric Botcazou  <ebotcazou@adacore.com>

	* config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare.
	(rs6000_legitimate_small_data_p): Delete.
	* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate.
	(rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p
	and make static.  Add forward declaration.  Update uses.
	(rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead
	of offsettable_memref_p.
	* config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix.
	Use rs6000_offsettable_memref_p instead of a less accurate predicate.

2006-03-24  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (propagate_rhs_into_lhs): Temporarily work
	around bug in immediate-use iterator.

2006-03-24  Alan Modra  <amodra@bigpond.net.au>

	PR target/26607
	* config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__
	or __LITTLE_ENDIAN__.

2006-03-23  J"orn Rennecke <joern.rennecke@st.com>

	* config/sh/divtab-sh4.c, config/sh/divcost-analysis: New files.
	* config/sh/lib1funcs.asm (div_table): Add !__SH5__ variant.
	* config/sh/t-sh (LIB1ASMFUNCS): Add _div_table.
	* config/sh/sh.opt (mdiv=): Amend description.
	* config/sh/sh.h (TARGET_DIVIDE_CALL_DIV1): New macro.
	(TARGET_DIVIDE_CALL_FP, TARGET_DIVIDE_CALL_TABLE): Likewise.
	(sh_divide_strategy_e): Add new members SH_DIV_CALL_DIV1,
	SH_DIV_CALL_FP, SH_DIV_CALL_TABLE and SH_DIV_INTRINSIC.
	(OVERRIDE_OPTIONS): Also process sh_div_str for TARGET_SH1.
	Calculate sh_divsi3_libfunc using TARGET_DIVIDE_* macros.
	* config/sh/sh.md (udivsi3_i4_int, divsi3_i4_int): New patterns.
	(udivsi3, divsi3): Use them.  Check TARGET_DIVIDE_CALL_TABLE /
	TARGET_DIVIDE_CALL_FP.

2006-03-23  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (choose_ready): Fix type of the local variable.
	Move local variables.  Add comment.
	(check_reg_live): Change signature.  Make callable from debugger.
	* sched-int.h (check_reg_live): Update signature.
	* sched-ebb.c (check_reg_live): Update parameters.
	* sched-rgn.c (check_reg_live): Ditto.
	(region_head_or_leaf_p): Check pointer before dereferencing.
	* config/ia64/ia64.c (ia64_set_sched_flags): Disable data speculation
	before reload on optimization levels below 1.

2006-03-23  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_legitimate_constant_p): Reject
	tls symbols.

	PR target/26347
	* config/alpha/predicates.md (local_symbolic_operand): Reject
	weak symbols.

2006-03-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/26795
	* tree-ssa-pre.c (create_value_expr_from): Don't reject
	expressions which have overflowed constants.

2006-03-23  Zdenek Dvorak <dvorakz@suse.cz>

	* cse.c (cse_end_of_basic_block): Do not check for LOOP_END note.

2006-03-23  Zdenek Dvorak <dvorakz@suse.cz>

	* cfgloopmanip.c (create_loop_notes): Removed.
	* final.c (final_scan_insn): Do not handle loop notes.
	* jump.c (squeeze_notes): Ditto.
	* cfglayout.c (skip_insns_after_block,
	duplicate_insn_chain): Ditto.
	* cfgcleanup.c (rest_of_handle_jump2): Do not call
	create_loop_notes.
	* cfgloop.h (create_loop_notes): Declaration removed.

2006-03-23  Richard Sandiford  <richard@codesourcery.com>

	* varasm.c (output_constant_pool): Restore fnname and fndecl
	arguments.
	(assemble_start_function): Adjust call accordingly.
	(assemble_end_function): Likewise.

2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR mudflap/26789
	* tree-mudflap.c (mudflap_finish_file): Skip erroneous objects.

	PR mudflap/26790
	* tree-mudflap.c (mf_xform_derefs_1): Return early on error_mark_node.

2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR driver/22600
	* system.h (ICE_EXIT_CODE): New macro.
	* diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
	(diagnostic_action_after_output): Likewise.
	* gcc.c (fatal_ice): New function.
	(execute): Use it instead of fatal.
	(fancy_abort): Likewise.
	* doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.

2006-03-22  Jeff Law  <law@redhat.com>

	* loop-unroll.c (analyze_iv_to_split_insn): Handle
	iv_analyze_result returning false.

2006-03-22  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/bfin.h (ASM_FORMAT_PRIVATE_NAME): Remove.

2006-03-22  Richard Henderson  <rth@redhat.com>

	PR middle-end/26084
	* except.c (duplicate_eh_regions_0): New.
	(duplicate_eh_region_1): Duplicate the children of the node as
	well as the node itself.  Link them up properly.
	(duplicate_eh_region_2): Merge into ...
	(duplicate_eh_regions): ... here.  Take copy_region argument, and
	copy only a sub-tree if asked.  Simplify copying and fixup.
	(eh_region_outer_p): New.
	* except.h (duplicate_eh_regions): Update decl.
	(eh_region_outer_p): Declare.
	* omp-low.c (lower_omp_single): Fix eh region placement wrt OMP_RETURN.
	(lower_omp_master): Likewise.
	(lower_omp_ordered): Likewise.
	* tree-cfg.c (struct move_stmt_d): Add new_label_map.
	(move_stmt_r): Use it to remap labels.  Handle recursion vs
	remap_decls_p properly.
	(move_block_to_fn): Pass in new_label_map.  Remap RESX_EXPR.
	(find_outermost_region_in_block): New.
	(new_label_mapper): New.
	(move_sese_region_to_fn): Copy eh information to the new function
	properly.
	* tree-inline.c (copy_cfg_body): Update for new duplicate_eh_regions
	argument.
	* tree-pretty-print.c (dump_generic_node): Dump RESX_EXPR region
	number.

2006-03-22  Richard Sandiford  <richard@codesourcery.com>

	* doc/md.texi (-mshared): Mention that -mshared code can be linked
	into shared libraries.

2006-03-22  Richard Sandiford  <richard@codesourcery.com>

	* doc/md.texi: Refer to i386/constraints.md instead of
	i386/predicates.md.
	* config/i386/constraints.md: New file, extracted from...
	* config/i386/predicates.md: ...here.
	* config/i386/i386.md: Include constraints.md.

2006-03-21  Jason Merrill  <jason@redhat.com>

	* builtins.c (expand_builtin_fork_or_exec): Fix pasto.

	PR middle-end/20297
	* expr.c (init_block_move_fn): Force default visibility.
	(init_block_clear_fn): Likewise.
	* builtins.c (expand_builtin_fork_or_exec): Likewise.
	* targhooks.c (default_external_stack_protect_fail): Likewise.

2006-03-21  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/predicates.md (const_call_insn_operand): Allow direct
	calls to locally-defined functions if TARGET_ABSOLUTE_ABICALLS.
	* config/mips/mips.md (jal_macro): Test TARGET_ABSOLUTE_ABICALLS.
	Use TARGET_OLDABI instead of !TARGET_NEWABI.
	(loadgp): Use mips_current_loadgp_style.
	(loadgp_noshared): New pattern.
	(sibcall_internal): Use MIPS_CALL.
	(sibcall_value_internal): Likewise.
	(sibcall_value_multiple_internal): Likewise.
	(call_internal): Likewise.
	(call_value_internal): Likewise.
	(call_value_multiple_internal): Likewise.
	(call_split): Use MIPS_CALL and add an 'S' constraint.
	(call_value_split): Likewise.
	(call_value_multiple_split): Likewise.
	* config/mips/mips.opt (-mabicalls): Tweak docstring.
	(-mshared): New option.
	* config/mips/mips-protos.h (mips_loadgp_style): New enum.
	(mips_current_loadgp_style): Declare.
	* config/mips/mips.c (mips_classify_symbol): Avoid using
	SYMBOL_GOT_LOCAL if TARGET_ABSOLUTE_ABICALLS.  Use SYMBOL_GENERAL
	rather than SYMBOL_GOT_GLOBAL for locally-binding symbols if
	TARGET_ABSOLUTE_ABICALLS.
	(override_options): Adjust comments.  Improve the warning that is
	issued when -mabicalls and -G are used together.
	(mips_file_start): Remove comment.
	(mips_current_loadgp_style): New function.
	(mips_gnu_local_gp): New variable.
	(mips_emit_loadgp): Use mips_current_loadgp_style.  Handle
	LOADGP_ABSOLUTE.
	(mips_output_function_prologue): Use mips_current_laodgp_style.
	(mips_expand_prologue): Call mips_emit_loadgp before emitting
	the cprestore instruction.
	(mips_extra_live_on_entry): Fix reversed test.  Don't make $25
	live for TARGET_ABSOLUTE_ABICALLS.
	* config/mips/mips.h (TARGET_ABSOLUTE_ABICALLS): New macro.
	(ASM_SPEC): Pass down -mshared and -mno-shared.
	(MIPS_CALL): New macro.
	* config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Remove __ABICALLS__
	definition.
	* doc/invoke.texi (-mabicalls): Update documentation.
	(-mshared): Document.

2006-03-21  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/unwind-hpux.c: New file.
	* config/ia64/t-hpux: Add unwind-hpux.c to libgcc.

2006-03-21  Steve Ellcey  <sje@cup.hp.com>

	PR libgomp/26384
	* config/pa/pa64-hpux.h (LIB_SPEC): Fix for -mt and -pthread options.

2006-03-21  Jeff Law  <law@redhat.com>

	* tree-vrp.c (extract_range_from_unary_expr): Derive ranges for
	type conversions of a VR_VARYING source to a wider type.

2006-03-21  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config.gcc (i[34567]86-*-solaris2*): Add config/sol2-10.h to
	tm_file on Solaris 10 and later.
	(sparc64-*-solaris2*): Likewise.
	(sparc-*-solaris2*): Likewise.
	* config/sol26.h: Rename to config/sol2-6.h.
	* config/sol2-10.h: New file.

2006-03-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/26781
	* tree-ssa-pre.c (create_component_ref_by_pieces):
	Handle STRING_CST.

2006-03-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/26690
	* tree.c (get_callee_fndecl): If CALL is error_mark_node,
	return it immediately.

2006-03-21  Michael Matz  <matz@suse.de>

	* genautomata.c (<struct state>, num_out_arcs, presence_signature):
	New members.
	(remove_arc, add_arc): Update num_out_arcs member.
	(set_out_arc_insns_equiv_num): Returns nothing instead of number
	of out arcs.
	(cache_presence): New function.
	(compare_states_for_equiv): New function.
	(state_is_differed): Don't take number of outargs, adjust callers.
	Use new invariant for speeding up.
	(init_equiv_class): Create initial classes based on sorted
	input.
	(partition_equiv_class): Don't track out_arcs_num.
	(evaluate_equiv_classes): Call cache_presence on all states and
	sort them.

2006-03-21  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/bfin-protos.h (bfin_dsp_memref_p): Declare.
	* config/bfin/bfin.c (bfin_dsp_memref_p): New function.
	(bfin_valid_reg_p): Test for pseudos explicitly and use only
	REGNO_MODE_CODE_OK_FOR_BASE_P.  New args MODE and OUTER_CODE; all
	callers changed.
	* config/bfin/bfin.h (PREG_P): Use P_REGNO_P.
	(IREG_P, P_REGNO_P, I_REGNO_P): New macros.
	(enum reg_class, REG_CLASS_CONTENTS): Add IPREGS.
	(BASE_REG_CLASS, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P,
	REGNO_OK_FOR_BASE_STRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): Delete
	macros.
	(IREG_POSSIBLE_P, MODE_CODE_BASE_REG_CLASS,
	REGNO_MODE_CODE_OK_FOR_BASE_P): New macros.
	(REGNO_REG_CLASS): ARGP is in PREGS.
	* config/bfin/bfin.md (movhi_insn): Allow for addresses containing
	IREGS.
	(zero_extendhisi2, extendhisi2): Likewise; changed to define_and_split
	to deal with those addresses.
	* addresses.h: New file.
	* caller-save.c: Include "addresses.h".
	(init_caller_save): Use new base_reg_class function.
	* rtl-factoring.c: Include "addresses.h".
	(recompute_gain_for_pattern_seq): Use new function ok_for_base_p_1.
	* recog.c: Include "addresses.h".
	(preprocess_constraints): Use new base_reg_class function.
	* regrename.c: Include "addresses.h".
	(scan_rtx_address): Use new regno_ok_for_base_p and base_reg_class
	functions.  Keep track of a new var INDEX_CODE to compute valid
	classes.
	(replace_oldest_value_addr): Likewise.
	(replace_oldest_value_mem): Use base_reg_class.
	* reload.c: Include "addresses.h".
	(REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Delete macros.
	(find_reloads): Use new base_reg_class function.
	(find_reloads_address): Likewise; also use regno_ok_for_base_p.
	(find_reloads_address_1): Likewise. New args OUTER_CODE and INDEX_CODE;
	all callers and prototype changed.
	* reload1.c: Include "addresses.h".
	(maybe_fix_stack_asms): Use base_reg_class.
	* regclass.c: Include "addresses.h".
	(ok_for_index_p_nonstrict, ok_for_base_p_nonstrict): New functions.
	(init_reg_autoinc): Use new base_reg_class function.
	(record_reg_classes): Likewise.
	(record_address_regs): Delete arg CLASS; add args CONTEXT, MODE,
	OUTER_CODE and INDEX_CODE.  All callers and prototype changed.
	Use new args to compute necessary class.

	* Makefile.in (regclass.o, reload.o, reload1.o, caller-save.o, recog.o,
	regrename.o, rtl-factoring.o): Update dependencies.
	* doc/tm.texi (MODE_CODE_BASE_REG_CLASS): Document.
	(REGNO_MODE_CODE_OK_FOR_BASE_P): Likewise.
	(REG_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_REG_BASE_P,
	REG_OK_FOR_INDEX_P): Delete documentation.

2006-03-21  Alexey Starovoytov  <alexey.starovoytov@sun.com>

	* config.gcc (sparc-*-solaris2*): Change the default CPU setting
	from V7 to V9 for Solaris 7 and above.

2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>

	* doc/invoke.texi: Document new flag -fargument-noalias-anything.
	* tree-ssa-alias.c (may_alias_p): If flag_argument_noalias > 2,
	argument pointers may not alias any other storage.
	* common.opt: Define option -fargument-noalias-anything.
	* tree-ssa-structalias.c (intra_create_variable_infos): Fortran
	alias semantics is specified by flag_argument_noalias > 2.

2006-03-20  Jeff Law  <law@redhat.com>

	* tree-pass.h (pass_phi_only_copy_prop): Delete.
	(pass_phi_only_cprop): Declare.
	* passes.c (init_optimization_passes): Replace pass_phi_only_copy_prop
	with phi_only_cprop
	* tree-ssa-dom.c (degenerate_phi_result): New function.
	(remove_stmt_or_phi, get_lhs_or_phi_result): Likewise.
	(get_rhs_or_phi_arg, propagate_rhs_into_lhs): Likewise.
	(eliminate_const_or_copy, eliminate_degenerate_phis_1): Likewise.
	(eliminate_degenerate_phis): Likewise.
	(pass_phi_only_cprop): New pass descriptor.
	* tree-ssa-copy.c (init_copy_prop): Lose PHIS_ONLY argument and
	support code.  Callers updated.
	(execute_copy_prop, do_copy_prop): Likewise and corresponding changes.
	(store_copy_prop): Likewise.
	(do_phi_only_copy_prop, pass_phi_only_copy_prop): Remove.

2006-03-20  Jason Merrill  <jason@redhat.com>

	PR c++/21764
	* c-pragma.c (visstack): Move out of handle_pragma_visibility.
	(push_visibility, pop_visibility): Likewise.
	* c-pragma.h: Declare them.

2006-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (untangle_mova): Initialize n_addr and n_target.

	* config/sh/sh.c (find_regmode_weight): Change the type of the first
	parameter and use get_ebb_head_tail.
	(sh_md_init_global): Adjust uses of find_regmode_weight.

2006-03-20  Steven Bosscher  <stevenb.gcc@gmail.com>

	* function.h (struct function) <x_tail_recursion_reentry>:
	Rename to x_stack_check_probe_note.
	(tail_recursion_reentry): Rename to stack_check_probe_note.
	* function.c: Replace tail_recursion_reentry with
	stack_check_probe_note everywhere.
	(expand_function_start): Only emit a note for
	stack_check_probe_note with -fstack-protect.
	* stmt.c (expand_case): Don't emit NOTE_INSN_DELETED notes.

	* emit-rtl.c (remove_unnecessary_notes): Remove.
	(pass_remove_unnecessary_notes): Remove.
	* rtl.h (remove_unnecessary_notes): Remove prototype.
	* final.c (final_start_function): Don't call remove_unnecessary_notes.
	* tree-pass.h (pass_remove_unnecessary_notes): Remove.
	* passes.c (pass_remove_unnecessary_notes): Don't run it.

2006-03-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/26629
	* tree-ssa-pre (phi_translate): Handle ARRAY_REF's operands.
	(valid_in_set): Handle ARRAY_REF.
	Change "if min_variant or VH" to asserts.
	(create_component_ref_by_pieces): Handle ARRAY_REF.
	(create_expression_by_pieces): Likewise.
	(can_PRE_operation): ARRAY_REFs can now be PRE'd.

2006-03-20  David Edelsohn  <edelsohn@gnu.org>

	* genpreds.c (write_insn_extra_address_constraint): Argument `c'
	is operand of switch, not str[0].

2006-03-20  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_handle_option): Use
	TARGET_NO_FP_IN_TOC inside #ifdef TARGET_USES_SYSV4_OPT too.

2006-03-19  David Edelsohn  <edelsohn@gnu.org>

	* genpreds.c (write_tm_preds_h): Add semicolon and newline at
	end of insn_extra_address_constraint declaration.

2006-03-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.opt (no-fp-in-toc): Use Var not Mask.
	(no-sum-in-toc): Same.
	* config/rs6000/rs6000.c (rs6000_handle_option): Use new
	variables.
	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set
	NO_FP_IN_TOC for -fPIC instead of mask.

	* config/rs6000/t-aix43 (T_ADAFLAGS): Delete.
	(BOOT_LDFLAGS): Delete.
	(LDFLAGS): Delete.
	* config/rs6000/t-aix52: Same.

	* config/rs6000/rs6000.md (store_multiple_power): Delete.
	(stmsi[345678]_power): New.

2006-03-17  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.opt: Add empty line to end of file.

2006-03-17  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26721
	* builtins.c (get_pointer_alignment): For component style references
	adjust alignment to the component type alignment.  Make sure
	to adjust alignment for component access of constants.

2006-03-17  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (strlensi): Emit barrier after
	unconditional jump.

2006-03-17  Paul Brook  <paul@codesourcery.com>

	* doc/install.texi: Docuemnt --with-mode.
	* config.gcc: Add --with-mode for arm*-*-*.
	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "mode".

2006-03-17  J"orn Rennecke <joern.rennecke@st.com>

	* sh.c (max_labelno_before_reorg): New variable.
	(sh_reorg): Initialize it.
	(find_barrier): Check max_labelno_before_reorg before using
	label_to_alignment.  Take length of explicit alignment insns
	into account.  When seeing a UNSPECV_CONST_END, return it.

	* sh.c (fixup_mova): Set mode of affected label to QImode.
	(untangle_mova): New function.
	(find_barrier): Use it.  Check mode of label before decrementing
	num_mova.
	(sh_reorg): Likewise.
	Set mode of all insns back to VOIDmode.

	* sh.c (MOVA_LABELREF): New macro.
	(mova_p, fixup_mova, sh_reorg): Use it.
	(find_barrier, sh_reorg): Don't count num_mova back to 0 unless
	ADDR_DIFF_VEC matches mova.

2006-03-17  Steven Bosscher  <stevenb.gcc@gmail.com>

	* dwarf2asm.c (dw2_asm_output_offset): Mark 'base' argument
	with ATTRIBUTE_UNUSED.

2006-03-17  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2out.c (dwarf2out_stack_adjust): Always track the stack
	pointer, instead of assuming it is possible to derive the
	correct args size from a call insn.

2006-03-16  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* rtl.h (CONST_INT_P): Define.
	* config/vax/vax.c (print_operand_address): Use CONST_INT_P()
	instead of GET_CODE(x) == CONST_INT.
	(vax_rtx_costs): Likewise.
	(vax_output_int_move): Likewise.
	(vax_output_int_add): Likewise.
	(legitimate_constant_address_p): Likewise.
	(index_term_p): Likewise.
	* config/vax/vax.h (PRINT_OPERAND): Likewise.
	* config/vax/vax.md (and<mode>3): Likewise.
	(ashrsi3): Likewise.
	(extv): Likewise.
	(movstricthi): Likewise.
	(movstrictqi): Likewise.
	(rotrsi3): Likewise.
	(five unnamed insns): Likewise.

2006-03-16  Geoffrey Keating  <geoffk@apple.com>

	* doc/tm.texi (SDB and DWARF): Add extra parameter to
	ASM_OUTPUT_DWARF_OFFSET.  Use @var to indicate metavariables.
	* dwarf2asm.h (dw2_asm_output_offset): Add section parameter.
	* dwarf2asm.c (dw2_asm_output_offset): Add base section parameter.
	Pass to ASM_OUTPUT_DWARF_OFFSET.
	* dwarf2out.c (debug_frame_section): New.
	(output_call_frame_info): Use debug_frame_section.  Pass it to
	dw2_asm_output_offset.
	(output_die): Pass appropriate section to dw2_asm_output_offset.
	(output_compilation_unit_header): Likewise.
	(output_pubnames): Likewise.
	(output_aranges): Likewise.
	(enum dw_val_class): Break dw_val_class_lbl_offset into
	dw_val_class_lineptr and dw_val_class_macptr.
	(add_AT_lbl_offset): Delete.
	(add_AT_lineptr): New.
	(add_AT_macptr): New.
	(AT_lbl): Expect a lineptr or macptr.
	(print_die): Handle dw_val_class_lineptr and dw_val_class_macptr.
	(attr_checksum): Likewise.
	(same_dw_val_p): Likewise.
	(size_of_die): Likewise.
	(value_format): Likewise.
	(output_die): Likewise.
	(dwarf2out_finish): Call add_AT_lineptr and add_AT_macptr instead of
	add_AT_lbl_offset.
	* config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
	* config/i386/i386.c (x86_file_start): Call darwin_file_start.
	* config/darwin-protos.h (darwin_file_start): New.
	(darwin_asm_output_dwarf_offset): New.
	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
	* config/rs6000/rs6000.c (rs6000_darwin_file_start): Call
	darwin_file_start.
	* config/darwin.c (darwin_emit_unwind_label): Don't output label
	if not EH section; simplify.
	(darwin_file_start): New.
	(darwin_asm_output_dwarf_offset): New.
	* config/darwin.h (DEBUG_FRAME_SECTION): In __DWARF segment,
	mark as 'debug'.
	(DEBUG_INFO_SECTION): Likewise.
	(DEBUG_ABBREV_SECTION): Likewise.
	(DEBUG_ARANGES_SECTION): Likewise.
	(DEBUG_MACINFO_SECTION): Likewise.
	(DEBUG_LINE_SECTION): Likewise.
	(DEBUG_LOC_SECTION): Likewise.
	(DEBUG_PUBNAMES_SECTION): Likewise.
	(DEBUG_STR_SECTION): Likewise.
	(DEBUG_RANGES_SECTION): Likewise.
	(FRAME_BEGIN_LABEL): Must start with 'L' in debug section.
	(ASM_OUTPUT_DWARF_OFFSET): New.

2006-03-16  Joseph S. Myers  <joseph@codesourcery.com>

	* config.gcc (tm_defines): Always add to previous value rather
	than replacing it.

2006-03-16  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/predicates.md (splittable_const_int_operand): New,
	split from move_operand.
	(splittable_symbolic_operand): New.
	(move_operand): Add commentary.  Use splittable_const_int_operand.
	Inline mips_atomic_symbolic_constant_p.
	* config/mips/mips.md: Add combine splitters for handling moves
	of splittable_const_int_operands and splittable_symbolic_operands.
	* config/mips/mips-protos.h (mips_atomic_symbolic_constant_p): Delete.
	(mips_split_symbol): Declare.
	(mips_move_integer): Declare.
	* config/mips/mips.c (mips_split_p): Make global.
	(TARGET_MIN_ANCHOR_OFFSET): Override default.
	(TARGET_MAX_ANCHOR_OFFSET): Likewise.
	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): Likewise.
	(mips_offset_within_object_p): Handle block symbols.
	(mips_atomic_symbolic_constant_p): Delete.
	(mips_cannot_force_const_mem): Return false for constants that
	mips_legitimize_move can handle.
	(mips_use_blocks_for_constant_p): New function.
	(mips_split_symbol): Make global.
	(mips_move_integer): Likewise.  Add a temporary register argument.
	(mips_legitimize_const_move): Use splittable_const_int_operand and
	splittable_symbolic_operand.
	(mips_use_anchors_for_symbol_p): New function.
	* config/mips/mips.h: Protect externs with !USED_FOR_TARGET.
	(mips_split_p): Declare.

2006-03-16  Richard Sandiford  <richard@codesourcery.com>

	* config.gcc (mips64*-*-linux*): Keep existing tm_defines.
	(mips*-*-linux*): Likewise.

2006-03-16  Roger Sayle  <roger@eyesopen.com>
	    Daniel Speyer  <dspeyer@wam.umd.edu>

	PR middle-end/18259
	* tree-dump.c (dump_real): New function.
	(dequeue_and_dump) <REAL_CST>: Use it to dump FP constants.
	* Makefile.in (REAL_H): New macro for dependencies on real.h.
	(tree-dump.o): Add $(REAL_H) to the dependencies.

2006-03-16  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/21781
	* real.c (real_from_string): If the mantissa is zero, don't bother
	parsing the exponent as the result should always be zero.

2006-03-16  Andreas Krebbel  <krebbel1@de.ibm.com>

	* simplify-rtx.c (simplify_plus_minus): Simplify within CONST terms.

2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>

	* config/ia64/ia64.c (stops_p): Added explicit initialization.
	(ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
	ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn,
	ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global,
	ia64_sched_finish_global): New static functions to implement
	hooks from gcc_target.sched.
	(spec_check_no, max_uid, pending_data_specs): New static variables.
	(ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p,
	ia64_spec_check_src_p): New static functions.
	(ia64_adjust_cost): Renamed to ia64_adjust_cost_2.
	(TARGET_SCHED_ADJUST_COST): Removed.
	(TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL,
	TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED,
	TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
	TARGET_SCHED_GEN_CHECK,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
	TARGET_SCHED_SET_SCHED_FLAGS): New macros.
	(update_set_flags, group_barrier_needed, set_src_needs_barrier):
	Fixed to handle speculation checks.
	(rtx_needs_barrier): Fixed to handle speculative loads and
	their checks.
	(ia64_variable_issue): Added code to count speculative loads and their
	checks.
	(ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle
	speculative loads.
	(enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET):
	New enumerations.
	(SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET):
	New constants.
	(ia64_ld_address_bypass_p): Fixed to handle speculative loads.
	(ia64_reorg): Reset stops_p to NULL after it is freed.
	* config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA,
	UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants.
	(itanium_class): chk_s renamed to chk_s_i.  New constants: chk_s_f,
	chk_a.
	(data_speculative, control_speculative, check_load): New attributes.
	(mov<mode>_advanced, mov<mode>_speculative,
	mov<mode>_speculative_advanced, zero_extend<mode>di2_advanced,
	zero_extend<mode>di2_speculative,
	zero_extend<mode>di2_speculative_advanced): New patterns for
	data and control speculative loads.
	(mov<mode>_clr, zero_extend<mode>di2_clr): New patterns for
	check loads.
	(advanced_load_check_clr_<mode>, speculation_check_<mode>):
	New pattern for data and control speculation checks.
	(MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr,
	ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr,
	reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes):
	Auxiliary definitions for the patterns.
	* config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a,
	1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource
	constraints.
	(1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition
	for speculation.
	(1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i.
	* config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f,
	2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a):
	New resource constraints.
	(2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition
	for speculation.
	(2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i.
	* config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec,
	msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
	msched-in-control-spec, msched-ldc, msched-control-ldc,
	msched-spec-verbose, msched-prefer-non-data-spec-insns,
	msched-prefer-non-control-spec-insns,
	msched-count-spec-in-critical-path): New flags to tune speculative
	scheduling.
	* doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec,
	msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
	msched-in-control-spec, msched-ldc, msched-control-ldc,
	msched-spec-verbose, msched-prefer-non-data-spec-insns,
	msched-prefer-non-control-spec-insns,
	msched-count-spec-in-critical-path): Document new flags.

2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>

	* target.h (struct spec_info_def): New opaque declaration.
	(struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended,
	speculate_insn, needs_block_p, gen_check,
	first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags.
	* target-def.h (TARGET_SCHED_ADJUST_COST_2,
	TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN,
	TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
	TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in
	gcc_target.sched.
	(TARGET_SCHED): Use new macros.
	* rtl.h (copy_DEPS_LIST_list): New prototype.
	* sched-int.h (struct sched_info): Change signature of new_ready field,
	adjust all initializations. New fields: add_remove_insn,
	begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg,
	region_head_or_leaf_p.
	(struct spec_info_def): New structure declaration.
	(spec_info_t): New typedef.
	(struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec,
	recovery_block, orig_pat.
	(glat_start, glat_end): New variables declaraions.
	(TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT):
	New access macros.
	(enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB,
	DETACH_LIFE_INFO, USE_GLAT.
	(enum SPEC_SCHED_FLAGS): New enumeration.
	(NOTE_NOTE_BB_P): New macro.
	(extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block,
	attach_life_info, debug_spec_status, check_reg_live): New functions.
	(get_block_head_tail): Change signature to get_ebb_head_tail, adjust
	all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c,
	sched-ebb.c
	(get_dep_weak, ds_merge): Prototype functions from sched-deps.c .
	* ddg.c (get_block_head_tail): Adjust all uses.
	* modulo-sched.c (get_block_head_tail): Adjust all uses.
	(sms_sched_info): Initialize new fields.
	(contributes_to_priority): Removed.
	* haifa-sched.c (params.h): New include.
	(get_block_head_tail): Adjust all uses.
	(ISSUE_POINTS): New macro.
	(glat_start, glat_end): New global variables.
	(spec_info_var, spec_info, added_recovery_block_p, nr_begin_data,
	nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header,
	old_last_basic_block, before_recovery, current_sched_info_var,
	rgn_n_insns, luid): New static variables.
	(insn_cost1): New function.  Move logic from insn_cost to here.
	(find_insn_reg_weight1): New function.  Move logic from
	find_insn_reg_weight to here.
	(reemit_notes, move_insn, max_issue): Change signature.
	(move_insn1): Removed.
	(extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d,
	extend_bb): New static functions to support extension of scheduler's
	data structures.
	(generate_recovery_code, process_insn_depend_be_in_spec,
	begin_speculative_block, add_to_speculative_block,
	init_before_recovery, create_recovery_block, create_check_block_twin,
	fix_recovery_deps): New static functions to support
	generation of recovery code.
	(fix_jump_move, find_fallthru_edge, dump_new_block_header,
	restore_bb_notes, move_block_after_check, move_succs): New static
	functions to support ebb scheduling.
	(init_glat, init_glat1, attach_life_info1, free_glat): New static
	functions to support handling of register live information.
	(associate_line_notes_with_blocks, change_pattern, speculate_insn,
	sched_remove_insn, clear_priorities, calc_priorities, bb_note,
	add_jump_dependencies):	New static functions.
	(check_cfg, has_edge_p, check_sched_flags): New static functions for
	consistancy checking.
	(debug_spec_status): New function to call from debugger.
	(priority): Added code to handle speculation checks.
	(rank_for_schedule): Added code to distinguish speculative instructions.
	(schedule_insn): Added code to handle speculation checks.
	(unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes):
	Fixed to handle ebbs.
	(move_insn): Added code to handle ebb scheduling.
	(max_issue): Added code to use ISSUE_POINTS of instructions.
	(choose_ready): Added code to choose between speculative and
	non-speculative instructions.
	(schedule_block): Added code to handle ebb scheduling and scheduling of
	speculative instructions.
	(sched_init): Initialize new variables.
	(sched_finish): Free new variables.  Print statistics.
	(try_ready): Added code to handle speculative instructions.
	* lists.c (copy_DEPS_LIST_list): New function.
	* sched-deps.c (extend_dependency_caches): New function.  Move logic
	from create_dependency_caches to here.
	(get_dep_weak, ds_merge): Make global.
	* genattr.c (main): Code to output prototype for
	dfa_clear_single_insn_cache.
	* genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros.
	(output_dfa_clean_insn_cache_func): Code to output
	dfa_clear_single_insn_cache function.
	* sched-ebb.c (target_n_insns): Remove.  Adjust all users to use
	n_insns.
	(can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs):
	Removed.
	(n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb):
	New static variables.
	(begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb,
	fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from
	struct sched_info.
	(ebb_sched_info): Initialize new fields.
	(get_block_head_tail): Adjust all uses.
	(compute_jump_reg_dependencies): Fixed to use glat_start.
	(schedule_ebb): Code to remove unreachable last block.
	(schedule_ebbs): Added code to update register live information.
	* sched-rgn.c (region_sched_info): Initialize new fields.
	(get_block_head_tail): Adjust all uses.
	(last_was_jump): Removed.  Adjust users.
	(begin_schedule_ready, add_remove_insn, insn_points, extend_regions,
	add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p):
	Implement new hooks.
	(check_dead_notes1): New static function.
	(struct region): New fields: dont_calc_deps, has_real_ebb.
	(RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros.
	(BB_TO_BLOCK): Fixed to handle EBBs.
	(EBB_FIRST_BB, EBB_LAST_BB): New macros.
	(ebb_head): New static variable.
	(debug_regions, contributes_to_priority): Fixed to handle EBBs.
	(find_single_block_regions, find_rgns, find_more_rgns): Initialize
	new fields.
	(compute_dom_prob_ps): New assertion.
	(check_live_1, update_live_1): Fixed to work with glat_start instead of
	global_live_at_start.
	(init_ready_list): New assertions.
	(can_schedule_ready_p): Split update code to begin_schedule_ready.
	(new_ready): Add support for BEGIN_CONTROL speculation.
	(schedule_insns): Fixed code that updates register live information
	to handle EBBs.
	(schedule_region): Fixed to handle EBBs.
	(init_regions): Use extend_regions and check_dead_notes1.
	* params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
	PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters.
	* doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED,
	TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
	TARGET_SCHED_GEN_CHECK,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
	TARGET_SCHED_SET_SCHED_FLAGS): Document.
	* doc/invoke.texi (max-sched-insn-conflict-delay,
	sched-spec-prob-cutoff): Document.

2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>

	* sched-int.h (struct haifa_insn_data): New fields: resolved_deps,
	inter_tick, queue_index.
	(struct sched_info): Change signature of init_ready_list field.
	Adjust all initializations.
	(RESOLVED_DEPS): New access macro.
	(ready_add): Remove prototype.
	(try_ready): Add prototype.
	* sched-rgn.c (init_ready_list): Use try_ready.
	(schedule_region): Initialize
	current_sched_info->{sched_max_insns_priority, queue_must_finish_empty}.
	* sched-ebb.c (new_ready): Remove.  Adjust ebb_sched_info.
	(init_ready_list): Use try_ready.
	(schedule_ebb): Initialize current_sched_info->sched_max_insns_priority.
	* lists.c (remove_list_elem): Remove `static'.
	(remove_free_INSN_LIST_elem): New function.
	* rtl.h (remove_list_elem, remove_free_INSN_LIST_elem): Add prototypes.
	* haifa-sched.c (INTER_TICK, QUEUE_INDEX): New macros.
	(INVALID_TICK, MIN_TICK, QUEUE_SCHEDULED, QUEUE_NOWHERE, QUEUE_READY):
	New constants.
	(readyp): New variable.
	(queue_remove, ready_remove_insn, fix_inter_tick, fix_tick_ready,
	change_queue_index, resolve_dep): New static functions.
	(try_ready): New function.  Adjust callers in sched-rgn.c and
	sched-ebb.c to use it instead of ready_add.
	(clock_var): Move at the begining of file.
	(rank_for_schedule): Fix typo.
	(queue_insn): Add assertion.  Handle QUEUE_INDEX.
	(ready_lastpos): Enforce assertion.
	(ready_add): Make it static.  Handle QUEUE_INDEX.  Add new argument,
	update all callers.
	(ready_remove_first, ready_remove): Handle QUEUE_INDEX.
	(schedule_insn): Rewrite to use try_ready and resolve_dep.
	(queue_to_ready): Use free_INSN_LIST_list.
	(early_queue_to_ready): Fix typo.
	(schedule_block): Init readyp.  Move init_ready_list call after the
	initialization of clock_var.  Fix error in rejecting insn by
	targetm.sched.dfa_new_cycle.  Add call to fix_inter_tick.  Remove code
	that previously	corrected INSN_TICKs.  Add code for handling
	QUEUE_INDEX.
	(set_priorities): Fix typo.
	(sched_init): Initialize INSN_TICK, INTER_TICK and QUEUE_INDEX.
	Clarify comment and code that keeps current_sched_info->next_tail
	non-null.

2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>

	* sched-rgn.c (extend_rgns): New static function.
	(find_rgns): Use it.
	(gather_region_statistics, print_region_statistics): New static
	functions.
	* params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter.
	* doc/invoke.texi (max-sched-extend-regions-iters): Document.

2006-03-16  Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
	    Andrey Belevantsev <abel@ispras.ru>

	* ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call.
	* lists.c (unused_deps_list): New variable.
	(free_list): Add assertions to verify the proper distinguishing
	between INSN_LISTs and DEPS_LISTs.
	(find_list_elem, remove_list_elem, remove_list_node): New static
	functions.
	(alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node,
	remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem,
	remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions.
	(alloc_INSN_LIST): Assert that the list we're working on is indeed
	an INSN_LIST.
	(free_INSN_LIST_node): Likewise.
	* modulo-sched.c (current_sched_info): Initialize flags field.
	* reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT.
	* rtl.def (DEPS_LIST): Define.
	* rtl.h: Declare new functions from lists.c.
	* sched-deps.c (spec_dependency_cache): New static variable.
	(maybe_add_or_update_back_dep_1, add_back_dep): New static functions.
	(add_dependence): Change return type to void.  Move the logic to ...
	(add_or_update_back_dep_1): ... here.  Handle speculative dependencies.
	(delete_all_dependences): Add comment about forward_dependency_cache.
	Handle spec_dependency_cache.  Handle DEPS_LISTs.
	(fixup_sched_groups): Clarify the change of priority of output
	and anti dependencies.
	(sched_analyze_2): Adjust add_dependence calls to create data
	speculative dependence.
	(add_forward_dependence): Renamed to add_forw_dep, change prototype.
	Adjust all callers.  Handle DEPS_LISTS.
	(compute_forward_dependences): Use add_forw_dep.  Sort LOG_LINKs in
	presence of speculation.
	(init_dependency_caches, free_dependency_caches):
	Handle spec_dependency_cache.
	(adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep,
	estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status):
	New static functions.
	(add_or_update_back_dep, add_or_update_back_forw_dep,
	add_back_forw_dep, delete_back_forw_dep): New functions.
	* sched-int.h (ds_t, dw_t): New typedefs.
	(struct sched_info): Add new field flags.
	(struct haifa_insn_data): Add new bitfield has_internal_dep.
	Prototype new sched-deps.c functions.
	(HAS_INTERNAL_DEP, DEP_STATUS): New access macros.
	(BITS_PER_DEP_STATUS, BITS_PER_DEP_WEAK, DEP_WEAK_MASK, MAX_DEP_WEAK,
	MIN_DEP_WEAK, NO_DEP_WEAK, UNCERTAIN_DEP_WEAK, BEGIN_DATA, BE_IN_DATA,
	BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC,
	SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE,
	SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP):
	New constants.
	(enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS):
	New enums.
	* sched-rgn.c (current_sched_info): Initialize flags field.
	(schedule_insns): Initialize current_sched_info before the sched_init
	call.
	* sched-ebb.c (current_sched_info): Initialize flags field.
	(add_deps_for_risky_insns): Use control_flow_insn_p instead of JUMP_P.
	Call add_or_update_back_dep instead of add_dependence.
	Create control speculative dependencies.
	(schedule_insns): Initialize current_sched_info before the sched_init
	call.

2006-03-16  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux-unwind.h (shmedia_fallback_frame_state): Set
	fs->signal_frame.
	(sh_fallback_frame_state): Likewise.

2006-03-15  Geoffrey Keating  <geoffk@apple.com>

	* config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.
	Do switch on default_use_cxa_atexit.
	(powerpc*-*-darwin*): Build crt2.o on powerpc.
	* config/darwin-crt3.o: New.
	* config/darwin.h (LINK_SPEC): If -shared-libgcc, make linker default
	to 10.3.  Pass '-multiply_defined suppress' if crt3.o is in use.
	(STARTFILE_SPEC): Add crt3.o when -shared-libgcc and appropriate
	OS version.
	* config/rs6000/t-darwin: Move crt2.o building to here.
	* config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Update
	Mac OS version for using __cxa_get_exception_ptr.  Don't test versions
	of __cxa_atexit.

2006-03-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/vax/vax.c (nonindexed_address_p): Change logical negation
	from '! xxx' to '!xxx' for coding-style conformance.
	* config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Likewise.
	(EXTRA_CONSTRAINT): Likewise.
	* config/vax/vax.md (four unnamed insns): Likewise.

2006-03-15  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (minipool_pad): New.
	(add_minipool_forward_ref): Include pool alignment padding in address
	calculation.
	(push_minipool_fix): Set minipool_pad.
	(minipool_pad): Ditto.

2006-03-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/vax/vax.c (split_quadword_operands): Use MEM_P()
	instead of GET_CODE() == MEM and REG_P() instead of
	GET_CODE() == REG.
	(print_operand_address): Likewise.
	(vax_address_cost): Likewise.
	(vax_rtx_costs): Likewise.
	(vax_notice_update_cc): Likewise.
	(vax_output_int_add): Likewise.
	(INDEX_REGISTER_P): Likewise.
	(BASE_REGISTER_P): Likewise.
	(nonindexed_address_p): Likewise.
	(vax_mode_dependent_address_p): Likewise.
	* config/vax/vax.h (EXTRA_CONSTRAINT): Likewise.
	(PRINT_OPERAND): Likewise.
	* config/vax/vax.md (ashlsi3): Likewise.
	(ashlsi3): Likewise.
	(some more unnamed insns): Likewise.

2006-03-15  Kazu Hirata  <kazu@codesourcery.com>

	* tree-ssa-dce.c (EXECUTE_IF_CONTROL_DEPENDENT): Make it an
	iterator-style macro.
	(mark_control_dependent_edges_necessary): Update the use of
	EXECUTE_IF_CONTROL_DEPENDENT.

2006-03-15  J"orn Rennecke <joern.rennecke@st.com>

	* config/sh/predicates.md (cache_address_operand): Special.
	(ua_address_operand): Likewise.

2006-03-15  Zdenek Dvorak <dvorakz@suse.cz>

	* haifa-sched.c (unlink_other_notes, reemit_notes): Do not handle
	loop notes.
	* sched-deps.c (sched_analyze_insn, sched_analyze): Ditto.

2006-03-15  Andreas Schwab  <schwab@suse.de>

	* gensupport.c (identify_predicable_attribute): Don't free p_false
	when it is still in use.

2006-03-15  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config.gcc (default with_cpu setting) <sparc*-*-*>: Do not modify
	the default setting here.

2006-03-14  Steven Bosscher  <stevenb.gcc@gmail.com>

	* tree-pass.h (pass_cfg): Remove.
	* alias.c (rest_of_handle_cfg, pass_cfg): Remove.
	* passes.c (pass_cfg): Don't run it.

2006-03-14  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (reg-stack.o): Don't depend on gt-reg-stack.h.
	* reg-stack.c (stack_regs_mentioned_data): Change the type to
	VEC(char,heap) *.
	(stack_regs_mentioned): Update the uses of
	stack_regs_mentioned_data.  Don't access the array beyond its
	end.
	(reg_to_stack): Update the uses of stack_regs_mentioned_data.
	Don't include gt-reg-stack.h.

	* config/bfin/bfin.h (UNALIGNED_WORD_ASM_OP): Remove.
	* system.h (UNALIGNED_WORD_ASM_OP): Poison.

	* combine.c (UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD): Remove.

	PR middle-end/26684
	* reg-stack.c (stack_regs_mentioned_data): Put it undef #ifdef
	STACK_REGS.

2006-03-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Fix typo.

2006-03-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26672
	* tree-ssa-propagate.c (set_rhs): Don't walk DEFs if not in
	SSA form.

2006-03-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26667
	* ipa-inline.c (cgraph_check_inline_limits): Walk the correct
	node for the callees.  Always allow inlining if it will shrink
	the function size.

2006-03-14  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26659
	* builtins.c (get_pointer_alignment): Prefer alignment
	information from decls over that from types.

2006-03-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/26657
	* config/darwin.h (LINK_COMMAND_SPEC): Handle -fopenmp.

2006-03-14  Joseph S. Myers  <joseph@codesourcery.com>

	* config/rs6000/rs6000.opt (mdlmzb): New option.
	(msched-prolog, msched-epilog): Use Var not Mask.
	* doc/invoke.texi (-mdlmzb): Document.
	* config/rs6000/rs6000.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
	MASK_SCHED_PROLOG.
	(rs6000_override_options): Enable -mdlmzb for 405 and 440.
	* config/rs6000/rs6000.md: Add dlmzb support for 405 and 440.

2006-03-13  Uttam Pawar  <uttamp@us.ibm.com>

	PR rtl-optimization/25739
	* bt-load.c (augment_live_range): Free tos pointer.

	* gensupport.c (identify_predicable_attribute): Free
	p_false pointer.
	* gcov.c (create_file_names): Free name pointer.

2006-03-13  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26557
	* stmt.c (emit_case_nodes): Handle the case where the index is a
	CONST_INT, where the comparison mode is specified by the index type.

2006-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O
	is defined.

2006-03-13  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.md (*branch_fp): Use %Z2 for the condition.
	(*branch_fp_inverted): Likewise.

2006-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/25989
	* omp-low.c (expand_omp_for_generic): Mark istart0
	and iend0 as addressable.

2006-03-13  Jie Zhang  <jie.zhang@analog.com>

	* config/bfin/uclinux.h: Define _GNU_SOURCE in CPLUSPLUS_CPP_SPEC.

2006-03-13  Jeff Law  <law@redhat.com>

	* tree-vrp.c (stmt_interesting_for_vrp): Some statements with
	virtual operands are interesting.
	(vrp_visit_stmt): Corresponding changes.

2006-03-13  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/lib1funcs.asm (___umodsi3): Use stack to save contents
	of RETS.
	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): If
	TARGET_ID_SHARED_LIBRARY, define __ID_SHARED_LIB__.
	* config/bfin/crti.S: Use it instead of __PIC__.
	* config/bfin/crtn.S: Likewise.

	* config/bfin/bfin.md (call_value_symbol, sibcall_value_symbol,
	call_symbol, sibcall_symbol): Disallow if TARGET_ID_SHARED_LIBRARY,
	not if flag_pic.
	Lose 'G' modifier for call operand.
	* config/bfin/bfin.c (print_operand) <case SYMBOL_REF>: Don't
	recognize 'G' modifier.

2006-03-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR middle-end/18859
	* gimplify.c (gimplify_switch_expr): Discard empty ranges.
	* stmt.c (expand_case): Likewise.

2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26254
	* loop-invariant.c (seq_insns_valid_p): New function.
	(move_invariant_reg): Only emit new code if it is valid.

2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>

	* cfgrtl.c (last_loop_beg_note, back_edge_of_syntactic_loop_p):
	Removed.
	(force_nonfallthru_and_redirect): Do not use last_loop_beg_note.
	(rtl_split_edge): Do not use back_edge_of_syntactic_loop_p.
	(commit_one_edge_insertion): Do not look for loop notes.

2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>

	* jump.c (follow_jumps): Do not check for loop notes.  Move check for
	flag_test_coverage out of loop.

2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>

	* final.c (shorten_branches): Remove outdated comment, and turn
	the if branch that guards it to continue.

2006-03-13  Zdenek Dvorak <dvorakz@suse.cz>

	* cfgloop.c (flow_loop_dump): Do not dump loop->invalid field.
	* cfgloop.h (struct loop): Remove unused fields.

2006-03-13  Kazu Hirata  <kazu@codesourcery.com>

	* doc/invoke.texi (-fdump-rtl-loop): Remove.
	(-dL, -fdump-rtl-loop2): Update the dump file names

	* doc/invoke.texi: Update dump file names.

2006-03-12  Steven Bosscher  <stevenb.gcc@gmail.com>

	* predict.c (estimate_probability): Remove.
	* profile.c (rest_of_handle_branch_prob, pass_branch_prob): Remove.
	* basic-block.h (estimate_probability): Remove prototype.
	* passes.c (finish_optimization_passes): Dump branch prediction or
	profiling heuristics to the .profile tree dump.
	(init_optimization_passes): Unqueue pass_branch_prob.

	* doc/invoke.texi (-fdump-rtl-bp): Remove.

2006-03-11  Steven Bosscher  <stevenb.gcc@gmail.com>

	* rtl.def (LABEL_REF): Remove the field for LABEL_NEXTREF.
	* rtl.h (LABEL_NEXTREF): Remove field accessor.

2006-03-11  Eric Botcazou  <ebotcazou@adacore.com>

	* function.h (frame_offset_overflow): Declare.
	* function.c (frame_offset_overflow): New function.
	(assign_stack_local_1): Call it to detect that the offset overflows.
	* cfgexpand.c (alloc_stack_frame_space): Likewise.

2006-03-11  Steven Bosscher  <stevenb.gcc@gmail.com>

	* config/sh/sh.c: Include alloc-pool.h.
	(label_ref_list_pool): New alloc pool.
	(label_ref_list_t): New type for lists of labels.
	(struct pool_node): Make wend a label_ref_list_t.
	(add_constant): Use the new type, eradicate LABEL_NEXTREF
	references.
	(dump_table): Likewise.
	(sh_reorg): Set up the alloc pool before using add_constant and
	dump_table, and destroy it when finishing.

2006-03-11  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips.c: Remove redundant comment.

2006-03-10  Jason Merrill  <jason@redhat.com>

	PR c/26004
	* gimplify.c (gimplify_modify_expr_rhs): Don't do return slot opt if
	the target was declared 'register'.

2006-03-10  Adam Nemet  <anemet@caviumnetworks.com>

	* genpreds.c (write_insn_constraint_len): Change definition of
	insn_constraint_len to return size_t to match the declaration.

2006-03-10  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Bit numbers
	start at zero.
	(m32c_expand_insv): Fix test for an AND mask.

2006-03-10  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26565
	* builtins.c (get_pointer_alignment): Handle component
	references for field alignment.

2006-03-10  J"orn Rennecke <joern.rennecke@st.com>

	* config.gcc (sh*-superh-elf, sh*elf (newlib)): Use newlib.h
	when building with libgloss.
	(sh*elf): Implement --without-fp option.
	(sh64-superh-linux*): Don't multilib.

2006-03-10  J"orn Rennecke <joern.rennecke@st.com>

	* struct-equiv.c (rtx_equiv_p): Fix POST_MODIFY case.

2006-03-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-phiopt.c (tree_ssa_phiopt): Add cfgchanged variable.
	Set it when one of the replacement functions returned true.
	Return TODO_cleanup_cfg if cfgchanged is true.
	(pass_phiopt) <todo_flags_finish>: Remove TODO_cleanup_cfg.

2006-03-09  Adam Nemet  <anemet@caviumnetworks.com>

	* combine.c (simplify_shift_const_1): Use gen_lowpart_or_truncate
	instead of gen_lowpart.

2006-03-09  Richard Sandiford  <richard@codesourcery.com>

	* config/mips/mips-protos.h (mips_output_conditional_branch): Change
	interface.
	(mips_output_order_conditional_branch): Declare.
	* config/mips/mips.h (MIPS_BRANCH): New macro.
	* config/mips/mips.c (gen_conditional_branch): Use VOIDmode
	for the comparison.  Use gen_condjump.
	(mips_output_conditional_branch): Rework interface to take the
	asm templates for a direct branch and the inverse of a direct branch.
	(mips_output_order_conditional_branch): New function.
	(mips_builtin_branch_and_move): New function.
	(mips_expand_builtin_compare): Use it.  Use VOIDmode for the
	branch condition.  Use gen_single_cc as the condition for
	__builtin_mips_upper_* or __builtin_mips_lower_*.
	(mips_expand_builtin_bposge): Use mips_builtin_branch_and_move.
	Use VOIDmode for the branch condition.
	* config/mips/predicates.md (order_operator): New predicate.
	* config/mips/mips.md (UNSPEC_SINGLE_CC): New constant.
	(branch_fp): Rename to...
	(*branch_fp): ...this.  Remove mode from comparison operator.
	Use new mips_output_conditional_branch interface.
	(branch_fp_inverted): Rename to...
	(*branch_fp_inverted): ...this and update as for *branch_fp.
	(*branch_zero<mode>): Rename to...
	(*branch_order<mode>): ...this.  Remove mode from comparison operator.
	Use mips_output_order_conditional_branch.  Only accept ordered
	comparisons.
	(*branch_zero<mode>_inverted): Rename to...
	(*branch_order<mode>_inverted): ...this and update as for
	*branch_order<mode>.
	(*branch_equality<mode>): Accept zero as the second operand to
	the equality operator.  Use the new mips_output_conditional_branch
	interface.
	(*branch_equality<mode>_inverted): Likewise.
	(condjump): New expander.
	* config/mips/mips-dsp.md (mips_bposge): Remove mode from comparison
	operator.
	* config/mips/mips-ps-3d.md (bc1any4t, bc1any4f): Likewise.
	(bc1any2t, bc1any2f): Likewise.
	(single_cc): New expander.
	(*branch_upper_lower, *branch_upper_lower_inverted): New patterns.

2006-03-09  Richard Sandiford  <richard@codesourcery.com>

	* doc/md.texi: Update documentation of MIPS constraints.
	* config/mips/constraints.md: New file.
	* config/mips/mips.md: Include it.
	* config/mips/mips.c (mips_char_to_class): Delete.
	(override_options): Don't initialize mips_char_to_class.
	* config/mips/mips.h (mips_char_to_class): Delete.
	(REG_CLASS_FROM_LETTER): Delete.
	(CONST_OK_FOR_LETTER_P): Delete.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
	(EXTRA_CONSTRAINT_Y): Delete.
	(EXTRA_CONSTRAINT_STR): Delete.
	(CONSTRAINT_LEN): Delete.
	(EXTRA_MEMORY_CONSTRAINT): Delete.

2006-03-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (move_block_to_fn): Remove the statements from the
	original fn's eh regions.

2006-03-09  Eric Botcazou  <ebotcazou@adacore.com>

	* fold-const.c (build_range_check): Make sure to use a valid type to
	apply the "(c>=low) && (c<=high) into (c-low>=0) && (c-low<=high-low)"
	transformation.

	(range_predecessor): New static function.
	(range_successor): Likewise.
	(merge_ranges): Use them to compute predecessors and successors of
	range bounds.

2006-03-09  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26561
	* fold-const.c (fold_div_compare): When optimizing X/C1 op C2 as
	X op C3, consider whether C3 overflows towards +Inf or -Inf.

2006-03-08  DJ Delorie  <dj@redhat.com>

	* config/m32c/addsub.md (addqi3): Disparage a0/a1.
	(addpsi3): Expand to include memory operands.  Remove
	reload-specific splits.
	* config/m32c/bitops.md (bset_qi, bset_hi, bclr_qi): New.
	(andqi3_16, andhi3_16, iorqi3_16, iorhi3_16): New.
	(andqi3_24, andhi3_24, iorqi3_24, iorhi3_24): New.
	(andqi3, andhi3, iorqi3, iorhi3): Convert to expanders.
	(shift1_qi, shift1_hi, insv): New.
	* config/m32c/cond.md (cbranchqi4, cbranchhi4): Remove.
	(cbranch<mode>4, stzx_16, stzx_24_<mode>, stzx_reversed,
	cmp<mode>, b<code>, s<code>, s<code>_24, movqicc, movhicc,
	cond_to_int): New.
	* config/m32c/m32c-protos.h: Update as needed.
	* config/m32c/m32c.c (m32c_reg_class_from_constraint): Don't
	default the Rcr, Rcl, Raw, and Ral constraints.  Add Ra0 and Ra1.
	Fail for unrecognized R* constraints.
	(m32c_cannot_change_mode_class): Be more picky about pseudos.
	(m32c_const_ok_for_constraint_p): Add Imb, Imw, and I00.
	(m32c_extra_constraint_p2): Allow (mem (plus (plus fb int) int)).
	Add Sp constraint.
	(m32c_init_libfuncs): New.
	(m32c_legitimate_address_p): Add debug wrapper.
	(m32c_rtx_costs): New.
	(m32c_address_cost): New.
	(conversions): Add 'B' prefix.
	(m32c_print_operand): 'h' and 'H' pick lower and upper halves of
	operands, or word regnames for QI operands.  'B' prints bit
	position.
	(m32c_expand_setmemhi): New.
	(m32c_expand_movmemhi): New.
	(m32c_expand_movstr): New.
	(m32c_expand_cmpstr): New.
	(m32c_prepare_shift): Shift counts are limited to 16 bits at a time.
	(m32c_expand_neg_mulpsi3): Handle non-ints.
	(m32c_cmp_flg_0): New.
	(m32c_expand_movcc): New.
	(m32c_expand_insv): New.
	(m32c_scc_pattern): New.
	* config/m32c/m32c.h (reg classes): Add AO_REGS and A1_REGS.  Take
	a0/a1 out of SIregs.
	(STORE_FLAG_VALUE): New.
	* config/m32c/m32c.md: Add unspecs for string moves.  Define various mode and
	code macros.
	(no_insn): New.
	* config/m32c/mov.md: Make constraints more liberal.
	(zero_extendqihi2): Optimize r0/r1 case.
	* config/m32c/muldiv.md (mulpsi3): Check for intvals.
	* config/m32c/predicates.md (m32c_any_operand): New.
	(m32c_nonimmediate_operand): New.
	(m32c_hl_operand): New.
	(m32c_r3_operand): New.
	(ap_operand): New.
	(ma_operand): New.
	(memsym_operand): New.
	(memimmed_operand): New.
	(a_qi_operand): New.
	(m32c_eqne_operator): New.
	(m32c_1bit8_operand): New.
	(m32c_1bit16_operand): New.
	(m32c_1mask8_operand): New.
	(m32c_1mask16_operand): New.
	* config/m32c/blkmov.md: New file.
	* config/m32c/t-m32c (MD_FILES): Add blkmov.

2006-03-08  Andreas Tobler  <a.tobler@schweiz.ch>

	* dwarf2out.c (expand_builtin_dwarf_sp_column): Make dwarf_regnum
	unsigned to fix signed/unsigned comparison issue in
	DWARF2_FRAME_REG_OUT.
	(expand_builtin_init_dwarf_reg_sizes): Make i unsigned to fix signed/
	unsigned comparison issue in DWARF2_FRAME_REG_OUT.

	* tree-ssa-operands.c (finalize_ssa_def_ops): Move the declaration
	of ptr into the ENABLE_CHECKING section.

2006-03-08  Jeff Law  <law@redhat.com>

	* tree-vrp.c (infer_value_range): Only count pointer uses
	and dereferences if -fdelete-null-pointer-checks is enabled.

	* tree-vrp.c (find_assert_locations): Infer value ranges for
	single use pointers, but do not create ASSERT_EXPRs for them.
	When a non-null range is inferred for a pointer, backwards
	propagate that range to other equivalent pointers through the
	use-def chain.

2006-03-08  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/26500
	* Makefile.in (dvi, html, install-info): Invoke the corresponding
	language hook targets.
	* ada/Make-lang.in, cp/Make-lang.in, objc/Make-lang.in,
	objcp/Make-lang.in: Create stub rules for dvi, html, install-info
	if language hook targets were missing.

2006-03-07  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-opfinalize.h: Removed.
	* Makefile.in (tree-ssa-operands.o): Remove tree-ssa-opfinalize.h
	dependency.
	* tree-ssa-operands.c: Do not include tree-ssa-opfinalize.h.
	(ALLOC_OPTYPE, APPEND_OP_AFTER, MOVE_HEAD_AFTER, MOVE_HEAD_TO_FREELIST,
	INITIALIZE_USE, add_def_op, add_use_op, add_vuse_op, add_maydef_op,
	add_mustdef_op, finalize_ssa_def_ops, finalize_ssa_use_ops,
	finalize_ssa_v_may_def_ops, finalize_ssa_vuse_ops,
	finalize_ssa_v_must_def_ops): New.

2006-03-07  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-scan.c: (df_bb_refs_record): Fix obvious typo with wrong
	block as parameter.

2006-03-07  Geoffrey Keating  <geoffk@apple.com>

	* varasm.c (assemble_end_function): Say that 'fnname' is unused.

	* config/i386/i386.c (ix86_delegitimize_address): Handle Darwin
	addresses with offsets; reorganize.

	* dwarf2out.c (DWARF2_FRAME_REG_OUT): Move up in file.
	(expand_builtin_dwarf_sp_column): Call DWARF2_FRAME_REG_OUT.
	(expand_builtin_init_dwarf_reg_sizes): Likewise.

2006-03-08  David Billinghurst <David.Billinghurst@riotinto.com>

	PR target/26588
	* config/i386/cygwin.h (GOMP_SELF_SPECS): Define.

2006-03-08  Ben Elliston  <bje@au.ibm.com>

	* config/fp-bit.h (CMPtype): Typedef to a word mode integer.

2006-03-07  Aldy Hernandez  <aldyh@redhat.com>

	PR gomp/26238
	* doc/passes.texi (Tree-SSA passes): Document omp lowering and
	expansion.

2006-03-07  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26587
	* tree-ssa-structalias.c (handle_ptr_arith): Handle MINUS_EXPR.

2006-03-07  Richard Sandiford  <richard@codesourcery.com>

	* varasm.c (assemble_variable): Fix setting of DECL_IN_TEXT_SECTION.

2006-03-07  Richard Sandiford  <richard@codesourcery.com>

	* hooks.c (hook_bool_mode_rtx_true): New function.
	* hooks.h (hook_bool_mode_rtx_true): Declare.
	* toplev.c (compile_file): Call output_shared_constant_pool.
	* varasm.c (shared_constant_pool): New variable.
	(assemble_start_function, assemble_end_function): Remove arguments
	from call to output_constant_pool.
	(create_constant_pool): New function, split out from...
	(init_varasm_status): ...here.
	(force_const_mem): Choose between the shared and per-function constant
	pools.  Set current_function_uses_const_pool when reusing old entries
	as well as when creating new ones.
	(mark_constant): Ignore data argument.
	(mark_constants): Remove pool argument.
	(mark_constant_pool): Likewise.  Use current_function_uses_const_pool
	to decide whether the function uses a constant pool.
	(output_constant_pool_contents): New function, split out from...
	(output_constant_pool): ...here.
	(output_shared_constant_pool): New function.
	(init_varasm_once): Initialize shared_constant_pool.
	* output.h (output_constant_pool): Delete.
	(output_shared_constant_pool): Declare.
	* config/s390/s390-protos.h (s390_output_constant_pool): Delete.
	* config/i386/i386.c (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Override.

2006-03-06  Nick Clifton  <nickc@redhat.com>

	* config/m32r/m32r.h (OPTIMIZATION_OPTIONS): Remove reference to
	flag_strength_reduce.

2006-03-06  Ben Elliston  <bje@au.ibm.com>

	* config.gcc: Add t-dfprules to $tmake_file for i*86-*-linux* and
	x86_64-*-linux* configurations.

	* config/dfp-bit.h (CMPtype): Typedef to a word mode integer.
	(LIBGCC2_WORDS_BIG_ENDIAN): Define.

2006-03-05  Kazu Hirata  <kazu@codesourcery.com>

	* tree-ssa-threadupdate.c (rediscover_loops_after_threading):
	Remove.
	* basic-block.h: Remove the extern for
	rediscover_loops_after_threading.

	* cfgloop.c (cancel_loop): Make it static.
	* cfgloop.h: Remove the prototype for cancel_loop.

	* flow.c (recompute_reg_usage): Make it static.
	* rtl.h: Remove the prototype for recompute_reg_usage.

	* function.c (use_return_register): Make it static.
	* function.h: Remove the prototype.

2006-03-05  Kazu Hirata  <kazu@codesourcery.com>

	* recog.c (volatile_mem_p, validate_change_maybe_volatile):
	Remove.
	* recog.h: Remove the prototype for
	validate_change_maybe_volatile.

2006-03-05  Kazu Hirata  <kazu@codesourcery.com>

	* rtlanal.c (replace_reg): Remove.
	* rtl.h: Remove the prototype for replace_reg.

2006-03-05  Kazu Hirata  <kazu@codesourcery.com>

	* regclass.c (reg_scan_update): Remove.
	(reg_scan_mark_refs): Remove the last argument.
	* rtl.h: Remove the prototype for reg_scan_update.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* builtins.c, c-pragma.h, c-typeck.c, cgraph.c, cgraphunit.c,
	combine.c, common.opt, config/dfp-bit.c, config/i386/i386.c,
	config/m68k/m68k.c, config/m68k/m68k.md, config/mt/mt.c,
	config/mt/mt.h, config/s390/s390.md, df-core.c, df-problems.c,
	df-scan.c, df.h, diagnostic.c, expr.c, function.h, gimplify.c,
	loop-invariant.c, omp-low.c, opts.c, passes.c,
	rtl-factoring.c, rtlanal.c, struct-equiv.c, tree-cfgcleanup.c,
	tree-ssa-loop-niter.c, tree-ssa-loop-prefetch.c,
	tree-ssa-structalias.c, tree-ssa-threadedge.c,
	tree-ssa-threadupdate.c, tree-vect-patterns.c,
	tree-vect-transform.c, tree-vectorizer.h, tree-vrp.c,
	unwind-dw2.c: Fix comment typos.  Follow spelling conventions.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* dwarf2out.c (dwarf2out_add_library_unit_info): Remove.
	* dwarf2out.h: Remove the prototype for
	dwarf2out_add_library_unit_info.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* tree.c (add_var_to_bind_expr): Remove.
	* tree.h: Remove the prototype for add_var_to_bind_expr.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* regclass.c (n_non_fixed_regs): Remove.
	(init_reg_sets_1, globalize_reg): Remove all uses of
	n_non_fixed_regs.
	* hard-reg-set.h: Remove the extern for n_non_fixed_regs.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* rtlanal.c (insns_safe_to_move_p): Remove.
	* rtl.h: Remove the prototype for insns_safe_to_move_p.

2006-03-04  Kazu Hirata  <kazu@codesourcery.com>

	* expmed.c (expand_mult_add): Remove.
	* expr.h: Remove the prototype for expand_mult_add.

2006-03-04  Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2.h (_Unwind_FrameState): Add REG_SAVED_VAL_OFFSET
	and REG_SAVED_VAL_EXP constants.
	* unwind-dw2.c (struct _Unwind_Context): Add by_value array.
	(_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
	Handle regs stored by value.
	(_Unwind_SetGRValue, _Unwind_GRByValue): New functions.
	(execute_cfa_program): Handle DW_CFA_val_offset,
	DW_CFA_val_offset_sf and DW_CFA_val_expression.
	(uw_update_context_1): Handle REG_SAVED_REG with regs stored by
	value specially.  Handle REG_SAVED_VAL_OFFSET and REG_SAVED_VAL_EXP.
	(uw_install_context_1): Handle target regs stored by value.

2006-03-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-sra.c (tree_sra): Return todoflags;
	(generate_one_element): Set TODO_update_smt_usage if needed.
	(pass_sra): Remove TODO_update_smt_usage.
	* tree-ssa-forwprop.c (forward_propagate_addr_expr): Add some
	parameter.
	(tree_ssa_forward_propagate_single_use_vars): Return
	TODO_update_smt_usage if we need to update SMT usage.
	(pass_forwprop): Remove TODO_update_smt_usage.

2006-03-03  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c: Tidy whitespace.  Fix spelling.
	(correct_use_link): Remove reference to get_stmt_operands.
	(update_stmt_operands): Likewise.
	(get_modify_expr_operands): New function factored out of
	parse_ssa_operands and get_expr_operands.
	Try to create V_MUST_DEFs for LHS by default.
	(get_expr_operands) <case MODIFY_EXPR>: Call
	get_modify_expr_operands.
	<case ARRAY_RANGE_REF>: Handle together with ARRAY_REF.
	<case BIT_FIELD_REF>: Clear opf_kill_def from FLAGS.
	(parse_ssa_operands) <case MODIFY_EXPR>: Call
	get_modify_expr_operands.

2006-03-03  Kazu Hirata  <kazu@codesourcery.com>

	* tree-dfa.c (referenced_var_lookup_if_exists): Remove.
	* tree-flow.h: Remove the prototype for
	referenced_var_lookup_if_exists.

2006-03-03  Steve Ellcey  <sje@cup.hp.com>

	PR rtl-optimization/26345
	PR target/19061
	* config/ia64/predicates.md (basereg_operand): Don't look in subregs.

2006-03-03  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/26524
	* tree-scalar-evolution.c (interpret_rhs_modify_expr): Use
	fold_convert to create a constant of the appropriate type.

2006-03-03  Richard Sandiford  <richard@codesourcery.com>

	* doc/tm.texi: Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
	SYMBOL_REF_IN_BLOCK_P.
	* doc/rtl.texi: Likewise.  Refer to SYMBOL_FLAG_HAS_BLOCK_INFO instead
	of SYMBOL_FLAG_IN_BLOCK.
	* gengtype.c (adjust_field_rtx_def): Use SYMBOL_REF_HAS_BLOCK_INFO_P
	instead of SYMBOL_REF_IN_BLOCK_P.
	* explow.c (use_anchored_address): Likewise.
	* rtl.c (rtx_size): Likewise.
	* varasm.c (create_block_symbol): Set SYMBOL_FLAG_HAS_BLOCK_INFO
	instead of SYMBOL_FLAG_IN_BLOCK.
	(make_decl_rtl): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
	SYMBOL_REF_IN_BLOCK_P.
	(assemble_variable): Likewise.
	(output_constant_def_contents): Likewise.
	(output_constant_pool): Likewise.
	(default_encode_section_info): Preserve SYMBOL_FLAG_HAS_BLOCK_INFO
	instead of SYMBOL_FLAG_IN_BLOCK.
	* rtl.h (block_symbol): Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
	SYMBOL_REF_IN_BLOCK_P.
	(SYMBOL_REF_BLOCK): Likewise.
	(SYMBOL_REF_OFFSET): Likewise.
	(BLOCK_SYMBOL_CHECK): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
	SYMBOL_REF_IN_BLOCK_P.
	(SYMBOL_FLAG_IN_BLOCK): Replace with...
	(SYMBOL_FLAG_HAS_BLOCK_INFO): ...this.
	(SYMBOL_REF_IN_BLOCK_P): Replace with...
	(SYMBOL_REF_HAS_BLOCK_INFO_P): ...this.

2006-03-03  Jakub Jelinek  <jakub@redhat.com>

	* config/arm/unwind-arm.h (_Unwind_GetIPInfo): Fix pasto.

2006-03-02  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_unary_operation): When simplifying
	(neg (lt X 0)) into (ashiftrt X C) or (lshiftrt X C), make sure
	that we perform the right shift in the appropriate mode, and
	then extend or truncate the result to requested mode.

2006-03-03  Zdenek Dvorak <dvorakz@suse.cz>

	* gengtype.c (main): Handle double_int type.
	* tree.h (struct tree_int_cst): Make type of int_cst double_int.
	* double-int.c: New file.
	* double-int.h: New file.
	* system.h: Include doubleint.h.
	* Makefile.in (SYSTEM_H): Include double-int.h.
	(double-int.o): Add.

2006-03-03  Joseph S. Myers  <joseph@codesourcery.com>

	PR bootstrap/26478
	* Makefile.in (stmp-int-hdrs): Remove include/unwind.h before
	copying over it.

2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (remove_range_assertions): Do not update statements
	unnecessarily.

2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>

	* cse.c (rest_of_handle_cse): Do not pass CLEANUP_PRE_LOOP to cfg
	cleanup.
	* gcse.c (rest_of_handle_gcse): Ditto.
	* except.c (gate_handle_eh): Ditto.
	* cfgcleanup.c (rest_of_handle_jump2): Ditto.
	* basic-block.h (CLEANUP_PRE_LOOP): Remove.

2006-03-02  Eric Christopher  <echristo@apple.com>

	* config/i386/i386.c (machopic_output_stub): Add indirection to
	jump.

2006-03-02  Zdenek Dvorak <dvorakz@suse.cz>

	* loop.c: Removed.

2006-03-02  David S. Miller  <davem@sunset.davemloft.net>

	Sun Niagara specific optimizations.
	* config.gcc: Recognize niagara as target.
	* config/sparc/sparc.h (SPARC_RELAXED_ORDERING): Mention Niagara.
	(TARGET_CPU_niagara): Define.
	(CPP_CPU64_DEFAULT_SPEC): Define __sparc_v9__ for Niagara.
	(ASM_CPU64_DEFAULT_SPEC): Pass -Av9b for Niagara.
	(CPP_CPU_SPEC): Handle -mcpu=niagara.
	(ASM_CPU_SPEC): Likewise.
	(PROCESSOR_NIAGARA): New enum entry.
	(REGISTER_MOVE_COST): Handle Niagara.
	(BRANCH_COST, PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES): Likewise.
	* config/sparc/sparc.c (niagara_costs): New processor_costs entry.
	(sparc_override_options): Recognize "niagara", set appropriate
	default MASK_* values for it, and align functions to 32-bytes
	by default just like ULTRASPARC/ULTRASPARC3.
	(sparc_initialize_trampoline): Handle niagara like ultrasparc.
	(sparc64_initialize_trampoline): Likewise.
	(sparc_use_sched_lookahead): Use zero for niagara.
	(sparc_issue_rate): Use one for niagara.
	* config/sparc/niagara.md: New file.
	* config/sparc/sparc.md: Include it.
	* config/sparc/sol2-bi.h (CPP_CPU64_DEFAULT_SPEC,
	ASM_CPU32_DEFAULT_SPEC, ASM_CPU64_DEFAULT_SPEC): Set appropriately
	when default cpu is niagara.
	(CPP_CPU_SPEC): Handle -mcpu=niagara.
	(ASM_CPU_SPEC): Likewise.
	* config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Set appropriately
	when default cpu is niagara.
	(ASM_CPU_SPEC): Handle -mcpu=niagara.
	* config/sparc/linux64.h: Handle a default of TARGET_CPU_niagara
	just like v9/ultrasparc/ultrasparc3.
	* doc/invoke.texi: Add documentation for "niagara" and improve
	existing documentation for ultrasparc variants.

2006-03-02  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c (update_stmt_operands): Update documentation.

2006-03-02  Richard Sandiford  <richard@codesourcery.com>

	* doc/tm.texi (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Document.
	(ASM_OUTPUT_BSS): Describe the two ways of handling global BSS,
	and say that only one is needed.
	* doc/rtl.texi (SYMBOL_REF_BLOCK): Say that the block can be null.
	* target.h (have_switchable_bss_sections): New hook.
	* explow.c (use_anchored_address): Check that the symbol is in a block.
	* varasm.c (tls_comm_section, comm_section, lcomm_section)
	(bss_noswitch_section): New variables.
	(get_unnamed_section): Add SECTION_UNNAMED to the flags.
	(get_noswitch_section): New function.
	(get_block_for_section): Allow SECT to be null.
	(unlikely_text_section_p): Use SECTION_STYLE.
	(bss_initializer_p): New function.
	(get_variable_section): Move earlier in file.  Take a new argument,
	prefer_noswitch_p.  Move bss checks from assemble_variable to here.
	Return one of the new *_sections in such cases.
	(get_block_for_decl): New function, extracting some logic from
	use_blocks_for_decl_p.
	(change_symbol_section): Remove in favor of...
	(change_symbol_block): ...this new function.
	(use_blocks_for_decl_p): Remove checks now performed by
	get_block_for_decl.
	(make_decl_rtl): Use change_symbol_block and get_block_for_decl.
	(ASM_EMIT_LOCAL, ASM_EMIT_BSS, ASM_EMIT_COMMON): Delete in favor of...
	(emit_local, emit_bss, emit_common): ...these new functions.
	Return true if the alignment was honored.
	(emit_tls_common): New function.
	(asm_emit_uninitialised): Delete.
	(assemble_variable_noswitch): New function, split out from...
	(assemble_variable): ...here.  Don't make decisions about common
	variables here.  Globalize all public decls that go into non-common
	sections.  Check whether SYMBOL_REF_BLOCK is null.
	(output_constant_def_contents): Check whether SYMBOL_REF_BLOCK is null.
	(output_constant_pool): Likewise.
	(init_varasm_once): Initialize the new section variables.
	(have_global_bss_p): New function.
	(categorize_decl_for_section): Use bss_initializer_p.
	(switch_to_section): Use SECTION_STYLE.  Abort for SECTION_NOSWITCH.
	(place_block_symbol): Assert that the symbol must be in a block.
	* target-def.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): New macro.
	(TARGET_INITIALIZER): Include it.
	* rtl.h (SYMBOL_REF_BLOCK): Document the null alternative.
	* output.h (SECTION_STYLE_MASK, SECTION_COMMON): New macros.
	(SECTION_MACH_DEP): Bump by two.
	(SECTION_UNNAMED, SECTION_NOSWITCH): New macros.
	(unnamed_section): Mention SECTION_UNNAMED in comment.
	(named_section): Likewise SECTION_NAMED.
	(noswitch_section_callback): New type.
	(noswitch_section): New structure.
	(section): Add a noswitch_section alternative.
	(SECTION_STYLE): New macro.
	(tls_comm_section, comm_section, lcomm_section): Declare.
	(bss_noswitch_section, have_global_bss_p): Declare.
	* config/elfos.h (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
	* config/iq2000/iq2000.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
	Override.
	* config/v850/v850.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Override.
	* config/stormy16/stormy16.c (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS):
	Override.

2006-03-02  Daniel Berlin <dberlin@dberlin.org>

	* tree-vrp.c (execute_vrp): Return value.
	* regrename.c (rest_of_handle_regrename): Ditto.
	* tree-into-ssa.c (rewrite_into_ssa): Ditto.
	* tree-complex.c (tree_lower_complex): Ditto.
	(tree_lower_complex_O0): Ditto.
	* tracer.c (rest_of_handle_tracer): Ditto.
	* postreload-gcse.c (rest_of_handle_gcse2): Ditto.
	* postreload.c (rest_of_handle_postreload): Ditto.
	* tree-tailcall.c (execute_tail_recursion): Ditto.
	(execute_tail_calls): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree.h (init_function_for_compilation): Ditto.
	* ipa-cp.c (ipcp_driver): Ditto.
	* tree-scalar-evolution.c (scev_const_prop): Ditto.
	* tree-scalar-evolution.h (scev_const_prop): Ditto.
	* final.c (compute_alignments): Ditto.
	(rest_of_handle_final): Ditto.
	(rest_of_handle_shorten_branches): Ditto.
	(rest_of_clean_state): Ditto.
	* omp-low.c (execute_expand_omp): Ditto.
	(execute_lower_omp): Ditto.
	* tree-ssa-dse.c (tree_ssa_dse): Ditto.
	* ipa-reference.c (static_execute): Ditto.
	* tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
	* reorg.c (rest_of_handle_delay_slots): Ditto.
	(rest_of_handle_machine_reorg): Ditto.
	* cgraphunit.c (rebuild_cgraph_edges): Ditto.
	* flow.c (recompute_reg_usage): Ditto.
	(rest_of_handle_remove_death_notes): Ditto.
	(rest_of_handle_life): Ditto.
	(rest_of_handle_flow2): Ditto.
	* tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
	* tree-ssa-ccp.c (do_ssa_ccp): Ditto.
	(do_ssa_store_ccp): Ditto.
	(execute_fold_all_builtins): Ditto.
	* mode-switching.c (rest_of_handle_mode_switching): Ditto.
	* modulo-sched.c (rest_of_handle_sms): Ditto.
	* ipa-pure-const.c (static_execute): Ditto.
	* cse.c (rest_of_handle_cse): Ditto.
	(rest_of_handle_cse2): Ditto.
	* web.c (rest_of_handle_web): Ditto.
	* tree-stdarg.c (execute_optimize_stdarg): Ditto.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
	* tree-nrv.c (tree_nrv): Ditto.
	(execute_return_slot_opt): Ditto.
	* tree-ssa-alias.c (compute_may_aliases): Ditto.
	(create_structure_vars): Ditto.
	* loop-init.c (rtl_loop_init): Ditto.
	(rtl_loop_done): Ditto.
	(rtl_move_loop_invariants): Ditto.
	(rtl_unswitch): Ditto.
	(rtl_unroll_and_peel_loops): Ditto.
	(rtl_doloop): Ditto.
	* gimple-low.c (lower_function_body): Ditto.
	(mark_used_blocks): Ditto.
	* tree-ssa-sink.c (execute_sink_code): Ditto.
	* ipa-inline.c (cgraph_decide_inlining): Ditto.
	(cgraph_early_inlining): Ditto.
	* global.c (rest_of_handle_global_alloc): Ditto.
	* jump.c (cleanup_barriers): Ditto.
	(purge_line_number_notes): Ditto.
	* ifcvt.c (rest_of_handle_if_conversion): Ditto.
	(rest_of_handle_if_after_reload): Ditto.
	* tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
	(tree_ssa_loop_im): Ditto.
	(tree_ssa_loop_unswitch): Ditto.
	(tree_vectorize): Ditto.
	(tree_linear_transform): Ditto.
	(tree_ssa_loop_ivcanon): Ditto.
	(tree_ssa_empty_loop): Ditto.
	(tree_ssa_loop_bounds): Ditto.
	(tree_complete_unroll): Ditto.
	(tree_ssa_loop_prefetch): Ditto.
	(tree_ssa_loop_ivopts): Ditto.
	(tree_ssa_loop_done): Ditto.
	* predict.c (tree_estimate_probability): Ditto.
	* recog.c (split_all_insns_noflow): Ditto.
	(rest_of_handle_peephole2): Ditto.
	(rest_of_handle_split_all_insns): Ditto.
	* tree-eh.c (lower_eh_constructs): Ditto.
	* regmove.c (rest_of_handle_regmove): Ditto.
	(rest_of_handle_stack_adjustments): Ditto.
	* local-alloc.c (rest_of_handle_local_alloc): Ditto.
	* function.c (instantiate_virtual_regs): Ditto.
	(init_function_for_compilation): Ditto.
	(rest_of_handle_check_leaf_regs): Ditto.
	* gcse.c (rest_of_handle_jump_bypass): Ditto.
	(rest_of_handle_gcse): Ditto.
	* ipa-type-escape.c (type_escape_execute): Ditto.
	* alias.c (rest_of_handle_cfg): Ditto.
	* tree-if-conv.c (main_tree_if_conversion): Ditto.
	* profile.c (rest_of_handle_branch_prob): Ditto.
	* tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
	* rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
	* bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
	* tree-dfa.c (find_referenced_vars): Ditto.
	* except.c (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	(rest_of_handle_eh): Ditto.
	* emit-rtl.c (unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	* except.h (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	* cfgexpand.c (tree_expand_cfg): Ditto.
	* tree-cfgcleanup.c (merge_phi_nodes): Ditto.
	* tree-ssa-pre.c (do_pre): Ditto.
	(execute_fre): Ditto.
	* cfgcleanup.c (rest_of_handle_jump): Ditto.
	(rest_of_handle_jump2): Ditto.
	* tree-sra.c (tree_sra): Ditto.
	* tree-mudflap.c (execute_mudflap_function_ops): Ditto.
	(execute_mudflap_function_decls): Ditto.
	* tree-ssa-copy.c (do_copy_prop): Ditto.
	(do_store_copy_prop): Ditto.
	* ipa-prop.h (ipcp_driver): Ditto.
	* cfglayout.c (insn_locators_initialize): Ditto.
	* tree-ssa-forwprop.c
	(tree_ssa_forward_propagate_single_use_vars): Ditto.
	* cfglayout.h (insn_locators_initialize): Ditto.
	* tree-ssa-dce.c (tree_ssa_dce): Ditto.
	* tree-ssa.c (execute_early_warn_uninitialized): Ditto.
	(execute_late_warn_uninitialized): Ditto.
	* rtl.h (cleanup_barriers): Ditto.
	(split_all_insns_noflow): Ditto.
	(purge_line_number_notes): Ditto.
	(unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	(recompute_reg_usage): Ditto.
	(variable_tracking_main): Ditto.
	* integrate.c (emit_initial_value_sets): Ditto.
	* integrate.h (emit_initial_value_sets): Ditto.
	* tree-optimize.c (execute_free_datastructures): Ditto
	(execute_free_cfg_annotations): Ditto.
	(execute_fixup_cfg): Ditto.
	(execute_cleanup_cfg_pre_ipa): Ditto.
	(execute_cleanup_cfg_post_optimizing): Ditto.
	(execute_init_datastructures): Ditto.
	* tree-object-size.c (compute_object_sizes): Ditto.
	* combine.c (rest_of_handle_combine): Ditto.
	* tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
	* bb-reorder.c (duplicate_computed_gotos): Ditto.
	(rest_of_handle_reorder_blocks): Ditto.
	(rest_of_handle_partition_blocks): Ditto.
	* var-tracking.c (variable_tracking_main): Ditto.
	* tree-profile.c (tree_profiling): Ditto.
	* tree-vect-generic.c (expand_vector_operations): Ditto.
	* reg-stack.c (rest_of_handle_stack_regs): Ditto.
	* sched-rgn.c (rest_of_handle_sched): Ditto.
	(rest_of_handle_sched2): Ditto.
	* basic-block.h (free_bb_insn): Ditto.
	* tree-ssa-structalias.c (ipa_pta_execute): Ditto.
	* tree-cfg.c (execute_build_cfg): Ditto.
	(remove_useless_stmts): Ditto.
	(split_critical_edges): Ditto.
	(execute_warn_function_return): Ditto.
	(execute_warn_function_noreturn): Ditto.
	* tree-ssa-reassoc.c (execute_reassoc): Ditto.
	* cfgrtl.c (free_bb_for_insn): Ditto.
	* passes.c (execute_one_pass): Run additional
	todos returned by execute function.
	* tree-pass.h (struct tree_opt_pass): Make execute
	return a value.

2006-03-02  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (find_used_portions): Consider taking
	the address as making the variable not write-only.

2006-03-02  Nick Clifton  <nickc@redhat.com>

	* config.gcc (default_use_cxa_atexit): Extend the description of
	this configure variable.  Set its default value to "yes" for
	Linux, NetBSD and ELF targets on the assumption that they will
	use C libraries with the __cxa_atexit function.

2006-03-02  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/linux-unwind.h (frob_update_context): Mark `fs'
	parameter as unused to suppress a build warning.

2006-03-02  Ben Elliston  <bje@au.ibm.com>

	* mklibgcc.in: Depend on config/dfp-bit.h in rules that compile
	config/dfp-bit.c.

2006-03-01  Roger Sayle  <roger@eyesopen.com>

	PR other/26489
	* gthr-posix.h (__gthrw2): Define to take three parameters, the
	declared name, the weak reference name, and the typeof name.
	(__gthrw): Avoid expanding the declared name suffix.
	(__gthrw3): New Tru64 specific macro to simplify the OSF/1 decls.

2006-03-01  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2.h (DW_TAG_condition, DW_TAG_shared_type): New constants
	from DWARF 3.
	(DW_AT_description, DW_AT_binary_scale, DW_AT_decimal_scale,
	DW_AT_small, DW_AT_decimal_sign, DW_AT_digit_count,
	DW_AT_picture_string, DW_AT_mutable, DW_AT_threads_scaled,
	DW_AT_explicit, DW_AT_object_pointer, DW_AT_endianity,
	DW_AT_elemental, DW_AT_pure, DW_AT_recursive): New.
	(DW_OP_form_tls_address, DW_OP_call_frame_cfa, DW_OP_bit_piece): New.
	(DW_ATE_packed_decimal, DW_ATE_numeric_string, DW_ATE_edited,
	DW_ATE_signed_fixed, DW_ATE_unsigned_fixed): New.
	(DW_DS_unsigned, DW_DS_leading_overpunch, DW_DS_trailing_overpunch,
	DW_DS_leading_separate, DW_DS_trailing_separate): New.
	(DW_END_default, DW_END_big, DW_END_little): New.
	(DW_END_lo_user, DW_END_hi_user): Define.
	(DW_LNE_lo_user, DW_LNE_hi_user): Define.
	(DW_CFA_val_offset, DW_CFA_val_offset_sf, DW_CFA_val_expression): New.
	(DW_LANG_PLI, DW_LANG_ObjC, DW_LANG_ObjC_plus_plus, DW_LANG_UPC,
	DW_LANG_D): New.

2006-03-01  Diego Novillo  <dnovillo@redhat.com>

	* tree.def (SYMBOL_MEMORY_TAG): Rename from TYPE_MEMORY_TAG.
	Update all users.
	* tree-pass.h (PROP_smt_usage): Rename from PROP_tmt_usage.
	Update all users.
	(TODO_update_smt_usage): Rename from TODO_update_tmt_usage.
	Update all users.
	* tree.h (SMT_USED_ALONE): Rename from TMT_USED_ALONE.
	Update all users.
	* tree-flow.h (struct var_ann_d): Rename field 'type_mem_tag'
	to 'symbol_mem_tag'.
	Update all users.
	* doc/tree-ssa.texi: Update documentation to reflect TMT->SMT
	rename.

2006-03-01  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_copysign): Delete unreachable code.

2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/25761
	* config/darwin.h (MACHOPIC_JUST_INDIRECT): Check just
	MACHO_DYNAMIC_NO_PIC_P.
	(MACHOPIC_PURE): Check flag_pic and not MACHO_DYNAMIC_NO_PIC_P.

2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/26389
	* config/darwin-protos.h (darwin_asm_output_anchor):
	Declare.
	* config/darwin-sections.def (cstring_section):
	Add SECTION_MERGE to the flags.
	(literal4_section): Likewise.
	(literal8_section): Likewise.
	(objc_selector_refs_section): Likewise.
	(objc_cls_refs_section): Likewise.
	* config/darwin.c (darwin_asm_output_anchor): New
	function.
	* config/darwin.h (TARGET_ASM_OUTPUT_ANCHOR): Define.

2006-03-01  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26443
	* tree-vrp.c (pass_vrp): Add TODO_update_tmt_usage
	to todo and PROP_tmt_usage to properties_destroyed.
	* tree-ssa-ccp.c (pass_ccp): Ditto.
	(pass_store_ccp): Ditto.
	* tree-ssa-dom.c (pass_dominator): Ditto.

2006-03-01  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c: Cleanup whitespace.
	(get_asm_expr_operands): Move before first invocation.
	(get_indirect_ref_operands): Likewise.
	(get_tmr_operands): Likewise.
	(get_call_expr_operands): Likewise.
	(append_def): Likewise.
	(append_use): Likewise.
	(append_v_may_def): Likewise.
	(append_v_must_def): Likewise.
	(add_call_clobber_ops): Likewise.
	(add_call_read_ops): Likewise.
	(add_stmt_operand): Likewise.
	(add_virtual_operand): Likewise.
	(build_ssa_operands): Likewise.

2006-03-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/26022
	Revert:
	PR middle-end/24437
	* tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
	with a call expr to ...
	* fold-const.c (fold_ternary) <case CALL_EXPR>: Here.

2006-03-01  Diego Novillo  <dnovillo@redhat.com>

	* tree-vrp.c (extract_range_from_assert): Remove special
	handling for types with super-types.

2006-03-01  Ben Elliston  <bje@au.ibm.com>

	* config.gcc: Add t-dfprules to $tmake_file for powerpc-*-linux*
	and powerpc64-*-linux* configurations.
	* config/t-dfprules: New file.

	* mklibgcc.in: Add logic to handle $DFP_ENABLE and $DFP_CFLAGS.
	Compile dfp-bit.c from the source directory using -DWIDTH and
	$DFP_CFLAGS to control the compilation of that file, rather than
	generating width-specific versions in the build directory.
	* Makefile.in (libgcc.mk): Pass down DFP_ENABLE and DFP_CFLAGS.
	(LIBGCC_DEPS): Replace $(D32PBIT) et al with config/dfp-bit.[hc].

2006-02-28  Zack Weinberg  <zackw@panix.com>

	* doc/md.texi: Avoid use of @headitem so that makeinfo <4.7
	continues to work.

2006-02-28  Eric Christopher  <echristo@apple.com>

	* config/rs6000/darwin.h (ENABLE_STACK_EXECUTE): Define.
	Set up IN_LIBGCC definition of TARGET_64BIT.
	* config/i386/darwin.h (ENABLE_STACK_EXECUTE): Define.

2006-02-28  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/14752
	* c-common.c (c_common_truthvalue_conversion) <MINUS_EXPR,
	BIT_XOR_EXPR, BIT_AND_EXPR>: Delete.  Let fold optimize these
	cases via the construction of "expr != 0".

2006-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>

	* alias.c (alias_invariant, alias_invariant_size): Remove.
	(record_base_value): Remove.
	(memrefs_conflict_p): Don't look at alias_invariant.
	(end_alias_analysis): Don't free it.
	* alias.h (record_base_value): Remove prototype.

2006-02-28  Paolo Bonzini  <bonzini@gnu.org>
	    Adam Nemet  <anemet@caviumnetworks.com>

	* rtl.h (truncated_to_mode): Declare it.
	(struct rtl_hooks): Add reg_truncated_to_mode hook.
	* rtlhooks-def.h (RTL_HOOKS_REG_TRUNCATED_TO_MODE): New macro.
	(RTL_HOOKS_INITIALIZER): Include it.
	* rtlhooks.c (reg_truncated_to_mode_general): New function.
	* combine.c (RTL_HOOKS_REG_TRUNCATED_TO_MODE): Override to
	reg_truncated_to_mode.
	* rtlanal.c (truncated_to_mode): Define it.
	* simplify-rtx.c (simplify_unary_operation_1): Use it.

2006-02-28  Jeff Law  <law@redhat.com>

	* tree-chrec.c (chrec_convert_aggressive): Do not eliminate
	conversions where TYPE_MIN_VALUE/TYPE_MAX_VALUE do not cover
	the range allowed by TYPE_PRECISION.

	* tree.h (strct phi_arg_d): Remove unused NONZERO field.

2006-02-28  Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-optimization/26419
	* doc/invoke.texi (ftree-vectorizer-verbose): Add information on
	values of n.

2006-02-27  Zack Weinberg  <zackw@panix.com>

	* doc/md.texi: Fix typo in previous change.

2006-02-27  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df.c: Remove.

2006-02-27  Zack Weinberg  <zackw@panix.com>

	* rtl.def (define_constraint, define_register_constraint)
	(define_memory_constraint, define_address_constraint): New MD forms.
	* gensupport.c (process_rtx): Put define_constraint etc on the
	predicate queue.
	* genpreds.c (process_define_predicate): Adjust comment.  Validate
	the name, and call validate_exp to validate the expression.
	(mark_mode_tests, write_extract_subexp): Can assume correct input.
	(write_predicate_expr): Likewise.  NAME argument no longer necessary;
	all callers changed.
	(validate_exp, needs_variable, struct constraint_data)
	(constraints_by_letter_table, first_constraint, last_constraint_ptr)
	(FOR_ALL_CONSTRAINTS, generic_constraint_letters, const_int_constraints)
	(const_dbl_constraints, constraint_max_namelen)
	(have_register_constraints, have_memory_constraints)
	(have_address_constraints, have_address_constraints)
	(have_extra_constraints, have_const_int_constraints)
	(have_const_dbl_constraints, mangle, add_constraint)
	(process_define_constraint, process_define_register_constraint)
	(write_enum_constraint_num, write_lookup_constraint)
	(write_insn_constraint_len, write_regclass_for_constraint)
	(write_constraint_satisfied_p, write_insn_const_int_ok_for_constraint)
	(write_insn_extra_memory_constraint)
	(write_insn_extra_address_constraint)
	(write_satisfies_constraint_fns): New.
	(write_tm_preds_h): If we have new-style constraint definitions,
	prototype the functions generated from them, and define the
	old constraint interface (still used by generic code) in terms of
	those functions.
	(write_insn_preds_c): If we have new-style constraint definitions,
	generate all relevant functions from those definitions.
	(main): Handle define_constraint etc.
	* genoutput.c (struct constraint_data, indep_constraints)
	(mdep_constraint_letters, constraints_by_letter_table, note_constraint)
	(mdep_constraint_len): New data structures and functions, defined
	#ifdef USE_MD_CONSTRAINTS.
	(check_constraint_len): Don't define #ifdef USE_MD_CONSTRAINTS.
	(validate_insn_alternatives): If USE_MD_CONSTRAINTS is defined,
	use new logic to validate operand constraints against constraint
	definitions.
	(main): Process define_constraint etc. if USE_MD_CONSTRAINTS is
	defined.
	* defaults.h: If none of the old-style constraint macros are
	defined, define USE_MD_CONSTRAINTS; do not provide defaults for any
	old-style macros; and poison REG_CLASS_FROM_LETTER,
	CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P, and
	EXTRA_CONSTRAINT.
	* recog.c (reg_fits_class_p): If cl is NO_REGS, return 0 immediately.
	* doc/md.texi: Document new constraint-definition mechanism and the
	C interface it provides.  Remove references to old mechanism
	elsewhere in the document.
	(Machine Constraints): Use pathnames relative to gcc directory,
	i.e. config/ARCH/FILE.  Change i386 section to refer to
	config/i386/predicates.md; update that section to match docstrings.
	* doc/tm.texi: Move all documentation of the old constraint-
	definition macros to their own section, clearly mark as obsolete.

	* config/i386/predicates.md (R, q, Q, l, a, b, c, d, S, D, A, f, t)
	(u, y, x, Y, I, J, K, L, M, N, O, G, C, e, Z): New constraint
	definitions.
	* config/i386/i386.h (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P)
	(CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
	* config/i386/i386.md (*movdf_nointeger): Remove stray 'H' from
	constraint strings.
	(splits and peepholes): Use satisfies_constraint_*.
	* config/i386/i386.c (memory_address_length)
	(ix86_attr_length_immediate_default): Use satisfies_constraint_*.

2006-02-27  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (can_convert_to_perfect_nest): Allow any type of
	scalar operation to be put back into the loop.

2006-02-27  Jakub Jelinek  <jakub@redhat.com>

	PR other/26208
	* unwind-dw2.c (struct _Unwind_Context): Add signal_frame field.
	(extract_cie_info): Handle S flag in augmentation string.
	(execute_cfa_program): If context->signal_frame, execute also
	fs->pc == context->ra instructions.
	(uw_frame_state_for): If context->signal_frame, don't subtract one
	from context->ra to find FDE.
	(uw_update_context_1): Set context->signal_frame to
	fs->signal_frame.
	(_Unwind_GetIPInfo): New function.
	* unwind-dw2.h (_Unwind_FrameState): Add signal_frame field.
	* unwind-c.c (PERSONALITY_FUNCTION): Use _Unwind_GetIPInfo instead
	of _Unwind_GetIP.
	* unwind-sjlj.c (_Unwind_GetIPInfo): New function.
	* unwind-generic.h (_Unwind_GetIPInfo): New prototype.
	* unwind-compat.c (_Unwind_GetIPInfo): New function.
	* libgcc-std.ver (_Unwind_GetIPInfo): Export @@GCC_4.2.0.
	* config/ia64/unwind-ia64.c (_Unwind_GetIPInfo): New function.
	* config/arm/unwind-arm.h (_Unwind_GetIPInfo): Define.
	* config/i386/linux-unwind.h (x86_fallback_frame_state,
	x86_64_fallback_frame_state): Set fs->signal_frame.
	* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Likewise.
	(MD_FROB_UPDATE_CONTEXT): Define unconditionally.
	(frob_update_context): Likewise.  Workaround missing S flag in
	Linux 2.6.12 - 2.6.16 kernel vDSOs.
	* config/s390/linux-unwind.h (s390_fallback_frame_state): Likewise.
	Remove the psw_addr + 1 hack.

2006-02-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (get_constraint_for): Move code to deal
	with aggregates here.
	(find_func_aliases): Remove code for &<aggregate> from here.

2006-02-26  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_binary) <EQ_EXPR>: Fold (~X & C) eq/ne 0 as
	(X & C) ne/eq 0, where C is a single bit, i.e. a power of two.
	Fold both "((X & C) ^ C) eq/ne 0" and "((X ^ C) & C) eq/ne 0"
	as (X & C) ne/eq 0.

2006-02-26  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/19983
	* real.c (real_nan): Allow both 0x and 0X as hexadecimal prefixes.

2006-02-26  Zdenek Dvorak <dvorakz@suse.cz>

	* opts.c (decode_options): Do not handle flag_strength_reduce.
	(common_handle_option): Handle OPT_floop_optimize, OPT_frerun_loop_opt
	and OPT_fstrength_reduce.
	* tree-ssa-loop.c (tree_ssa_loop_prefetch): Only test
	flag_prefetch_loop_arrays for being nonzero.
	* common.opt (floop-optimize, frerun-loop-opt): Resurrected as
	no-ops.
	(fprefetch-loop-arrays-rtl): Removed.
	(flag_prefetch_loop_arrays): Do not specify the value.

	* doc/passes.texi: Update documentation of loop optimizer
	passes.
	* doc/invoke.texi (-fstrength-reduce, -fprefetch-loop-arrays-rtl,
	-frerun-loop-opt): Remove.

2006-02-26  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26421
	* tree-ssa-alias.c (find_used_portions): Don't treat parameters
	in function calls that are ADDR_EXPRs as using the whole structure.

2006-02-26  Steven Bosscher  <stevenb.gcc@gmail.com>

	* common.opt (-floop-optimize, -frerun-loop-opt): Remove.
	* tree-pass.h (pass_loop_optimize): Remove.
	* passes.c (pass_loop_optimize): Never run it.
	* toplev.c (backend_init): Don't call init_loop.
	* opts.c (flag_loop_optimize_set): Remove.
	(decode_options): Never set flag_loop_optimize or flag_rerun_loop_opt.
	(common_handle_option) <OPT_floop_optimize>: Remove.  Don't disable
	the old RTL loop optimizer when profiling enabled.
	* predict.c (tree_estimate_probability): Always strip builtin_expect.
	* cfgcleanup.c (try_forward_edges): Don't avoid killing loop
	pre-headers for the sake of the old RTL loop optimizer.
	* Makefile.in: Remove all references to loop.o.

	* doc/invoke.texi: Remove all references to -floop-optimize
	and -frerun-loop-opt.

2006-02-26  Zack Weinberg  <zackw@panix.com>

	* doc/md.texi (Machine Constraints): Refer to all files with paths
	relative to gcc directory (i.e. config/CPU/file).  Add missing
	@table @code ... @end table to M32C subsection.

2006-02-26  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_binary) <BIT_XOR_EXPR>: Fold (X & 1) ^ 1 as
	(X & 1) == 0.
	<BIT_AND_EXPR>: Fold (X ^ 1) & 1 and ~X & 1 as (X & 1) == 0.

2006-02-26  Roger Sayle  <roger@eyesopen.com>
	    James A. Morrison  <phython@gcc.gnu.org>

	PR middle-end/21137
	* fold-const.c (fold_binary) <EQ_EXPR>: Fold ((X>>C1)&C2) eq/ne 0,
	when C2 is a power of two, as either (X&(C2<<C1)) eq/ne 0 if the
	new constant C2<<C1, or as (X<0) or (X,false) depending upon the
	signedness of the shift operation.

2006-02-26  Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-optimization/26359
	* tree-ssa-alias.c (new_type_alias): Set fields for new tag.

2006-02-25  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_relational_operation_1): Simplify
	(X^Y) == 0 as X == Y and (X^Y) != 0 as X != Y.  Simplify (X^Y) == Y
	as X == 0, and some symmetry related transformations.
	Simplify (X^C1) == C2 as X == (C1^C2).  Split long comment line.

2006-02-25  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/23673
	* fold-const.c (fold_binary) <EQ_EXPR>: Fold (X^Y) == 0 as X == Y
	and (X^Y) != 0 as X != Y.  Fold (X^Y) == Y as X == 0, and some
	symmetry related transformations.  Fold (X^C1) == C2 as
	X == (C1^C2).

2006-02-25  Juergen Weigert  <jw@suse.de>
	Richard Guenther  <rguenther@suse.de>

	* scan-decls.c (scan_decls): Don't fetch new statement after CPP_EOF.

2006-02-24  Adam Nemet  <anemet@caviumnetworks.com>

	* combine.c (gen_lowpart_or_truncate): Call
	simplify_gen_unary(TRUNCATE, ...) instead of gen_rtx_TRUNCATE.

2006-02-24  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Move -fopenmp description to "Options for
	Code Generation".
	Remove reference to -lgomp.

2006-02-24  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi: Require GNU tar version 1.14.

2006-02-24  Geoffrey Keating  <geoffk@apple.com>

	* doc/tm.texi (Run-time Target): Document C_COMMON_OVERRIDE_OPTIONS.
	* doc/invoke.texi (C++ Dialect Options): Document
	-fno-use-cxa-get-exception-ptr.
	* configure.ac: Define DEFAULT_USE_CXA_ATEXIT to 2 not 1.
	* configure: Regenerate.
	* c.opt (fuse-cxa-get-exception-ptr): New.
	* c-opts.c (c_common_handle_option): Handle
	OPT_fuse_cxa_get_exception_ptr.
	* c-common.c (flag_use_cxa_atexit): Update documentation.
	(flag_use_cxa_get_exception_ptr): New.
	* c-common.h (flag_use_cxa_get_exception_ptr): New.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Improve
	documentation.
	(C_COMMON_OVERRIDE_OPTIONS): New.

2006-02-24  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/24952
	* combine.c (try_combine): Explicitly check whether GET_CODE is
	a SET or a CLOBBER, instead on checking that it isn't a USE.

2006-02-24  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_comparison): New subroutine of fold_binary
	containing transformations common to both the equality and
	ordering relational operators, factored out of fold_binary.
	(fold_binary): Separate out the equality operators (EQ_EXPR
	and NE_EXPR) from the ordering operators (LT_EXPR, GT_EXPR,
	LE_EXPR and GE_EXPR), calling fold_comparison to perform the
	transformations common to both.
	(fold_div_compare): Fix latent bugs in the previously unreachable
	LT_EXPR and GE_EXPR cases.

2006-02-24  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_init_builtins): Change
	decl libname for clog to __clog on AIX.

	* config/rs6000/xcoff.h (MAX_OFILE_ALIGNMENT): Define.

2006-02-24  Alan Modra  <amodra@bigpond.net.au>

	PR target/26453
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
	output traceback table for thunks.  Localise rs6000_stack_info call.

2006-02-23  Roger Sayle  <roger@eyesopen.com>
	    Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* gthr-posix.h (__gthrw): Fix typo in comment.

2006-02-23  Geoffrey Keating  <geoffk@apple.com>

	* doc/cpp.texi (Character sets): Document that we do support
	input files to be in any character set.

2006-02-23  Jeff Law  <law@redhat.com>

	* tree.h (PHI_ARG_NONZERO): Remove.
	* tree-phinodes.c (add_phi_arg): No longer initialize PHI_ARG_NONZERO.
	(remove_phi_arg_num): No longer copy PHI_ARG_NONZERO from the old
	node to the new node.

	PR tree-optimization/26425
	* tree-vrp.c (vrp_visit_assignment): If the LHS's type has a NULL
	min/max, then assume its varying.

2006-02-23  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26316
	* rtlanal.c (enum may_trap_p_flags): New.
	(may_trap_p_1): Take flags instead of unaligned_mems argument.  Ignore
	MEM_NOTRAP_P if flags & MTP_AFTER_MOVE.
	(may_trap_p, may_trap_or_fault_p): Pass flags to may_trap_p_1.
	(may_trap_after_code_motion_p): New function.
	* loop-invariant.c (find_identical_invariants): Fix dump formating.
	(find_invariant_insn): Use may_trap_after_code_motion_p.
	* rtl.h (may_trap_after_code_motion_p): Declare.

2006-02-23  Zdenek Dvorak <dvorakz@suse.cz>

	* emit-rtl.c (immed_double_const): Cleanup.

2006-02-23  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26376
	* tree-ssa-structalias.c (find_func_aliases): Use get_id_for_tree,
	remove assert.

2006-02-23  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26412
	* gimplify.c (omp_add_variable): Guard variable size decl test with
	DECL_SIZE (decl) check.

2006-02-23  Richard Guenther  <rguenther@suse.de>

	PR middle-end/26439
	* tree-ssa-structalias.c (find_func_aliases): Handle complex types
	like aggregate types.

2006-02-23  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac: Add --with{,out}-long-double-128 configure option.
	(TARGET_DEFAULT_LONG_DOUBLE_128): New test.
	* configure: Rebuilt.
	* config.in: Rebuilt.
	* doc/install.texi (Options specification): Document
	--with-long-double-128.

	* config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
	(RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
	* config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
	(RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.

2006-02-23  Aldy Hernandez  <aldyh@redhat.com>

	* config/s390/s390.c (override_options): Handle
	TARGET_DEFAULT_LONG_DOUBLE_128.

	* config/alpha/alpha.c (override_options): Handle
	TARGET_DEFAULT_LONG_DOUBLE_128.

	* config/sparc/sparc.c (sparc_override_options): Handle
	TARGET_DEFAULT_LONG_DOUBLE_128.

2006-02-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (stmp-fixinc): Use real-$(INSTALL_HEADERS_DIR).
	(real-install-headers-tar, real-install-headers-cpio)
	(real-install-headers-cp): New targets.

2006-02-22  Richard Sandiford  <richard@codesourcery.com>

	* tree.h (variable_section): Delete.
	* varasm.c (variable_section): Delete.

2006-02-22  Paolo Bonzini  <bonzini@gnu.org>

	* install.texi: Add notes on install.texi2html.
	(Building in parallel): Do not use footnotes.

2006-02-21  Aldy Hernandez  <aldyh@redhat.com>

	PR libgomp/26234
	* doc/install.texi (Configuration): Document --disable-libgomp.

2006-02-21  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.

2006-02-21  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/sse.md (vec_extractv2df_1_sse): New.
	(vec_extractv2df_0_sse): New.

2006-02-21  Alexandre Oliva  <aoliva@redhat.com>

	* defaults.h (CFA_FRAME_BASE_OFFSET): Define.
	* config/ia64/ia64.h (CFA_FRAME_BASE_OFFSET): Override.
	* doc/tm.texi (CFA_FRAME_BASE_OFFSET): Document.
	* dwarf2out.c (build_cfa_loc): New offset parameter.  Add it
	to the result of the expression.
	(def_cfa_1): Adjust.
	(frame_pointer_cfa_offset): Rename to...
	(frame_pointer_fb_offset): ... this.  Adjust all uses.
	(convert_cfa_to_loc_list): Rename to...
	(convert_cfa_to_fb_loc_list): ... this.  New offset parameter.
	Pass it on to build_cfa_loc.
	(compute_frame_pointer_to_cfa_displacement): Rename to...
	(compute_frame_pointer_to_fb_displacement): ... this.  New
	offset parameter.  Use it in computation.
	(gen_subprogram_die): Compute cfa_fb_offset with the new
	macro, and use it to compute the fb loc list and the
	displacement.

2006-02-21  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/bfin/predicates.md (cc_operand): Delete predicate.  All uses
	replaced with register_operand.
	* config/bfin/bfin.c (bfin_register_move_cost): Moving CC to any
	non-DREG is expensive.
	* config/bfin/bfin.h (FIXED_REGISTERS): CC isn't fixed.
	* config/bfin/bfin.md (movbi): Fix constraints and template for moves
	involving memory.

2006-02-21  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/install.texi2html: Use set -e.

2006-02-21  Richard Sandiford  <richard@codesourcery.com>

	* doc/tm.texi (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
	(ASM_OUTPUT_SHARED_LOCAL): Delete.
	* doc/invoke.texi (-fshared-data): Delete.
	* common.opt (fshared-data): Delete.
	* varasm.c (asm_emit_uninitialised): Remove flag_shared_data handling.
	(assemble_static_space): Remove #if 0 code.
	* system.h (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
	(ASM_OUTPUT_SHARED_LOCAL): Poison.
	* config/cris/cris.h: Remove FIXME.

2006-02-21  Paolo Bonzini  <bonzini@gnu.org>

	* doc/sourcebuild.texi (Front End Directory): No more double-colon
	hooks.

2006-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26379
	* combine.c (simplify_shift_const_1): Disable nested shifts
	optimization for vector shifts.

2006-02-20  Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/26361
	* tree-vrp.c (extract_range_from_unary_expr): Handle NEGATE_EXPR
	of unsigned integer types.

2006-02-20  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.c (eq_evolutions_p): New.
	* tree-chrec.h (eq_evolutions_p): Declared.
	* tree-data-ref.c: Fix formatting.
	(datadep_stats, dependence_stats): New.
	(gcd): Moved...
	(print_direction_vector): New.
	(dump_data_dependence_relation): Use print_direction_vector.
	(object_analysis, create_data_ref): Handle COMPONENT_REF.
	(compute_subscript_distance): Static.
	(initialize_data_dependence_relation): Static.  Get the number
	of loops surrounding the references from the callers, and initialize
	DDR_SIZE_VECT to nb_loops.  Use both base_addr_differ_p and
	base_object_differ_p analyzers.
	(analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
	compute_overlap_steps_for_affine_1_2,
	analyze_subscript_affine_affine): Count the classified dependences.
	Print a message when a test failed.
	(can_use_analyze_subscript_affine_affine): New.
	(analyze_siv_subscript): Compute the data dependences on symbolic
	scevs that verify can_use_analyze_subscript_affine_affine.
	(chrec_steps_divide_constant_p): Returns true, false, or unknown.
	(analyze_miv_subscript): Update use of chrec_steps_divide_constant_p.
	Handle symbolic scevs.
	(analyze_overlapping_iterations): Let symbolic affine scevs to be
	analyzed.
	(subscript_dependence_tester): Moved...
	(build_classic_dist_vector, build_classic_dir_vector): Don't use
	lambda_vector_clear on newly allocated vectors.  Get nb_loops from
	DDR_SIZE_VECT instead of getting it in parameter.
	(subscript_dependence_tester): ... here.  Take as a parameter
	loop_nest_depth.  Call build_classic_dist_vector and
	build_classic_dir_vector.
	(compute_affine_dependence): Update subscript_dependence_tester
	parameters.  Update datadep_stats counters.  Call
	compute_subscript_distance.
	(compute_self_dependence): Save the dist and dir vectors.  Call
	compute_subscript_distance.
	(ddr_p, DEF_VEC_P(ddr_p), DEF_VEC_ALLOC_P(ddr_p,heap)): Moved...
	(compute_all_dependences): Reorder parameters as they were before
	conversion to VEC.  Pass nb_loops and loop_nest_depth.  Don't call
	compute_subscript_distance.  Update the use of
	compute_affine_dependence and initialize_data_dependence_relation.
	(find_data_references_in_loop): Handle COMPONENT_REF.
	(compute_data_dependences_for_loop): Initialize dependence_stats.
	Don't call build_classic_dist_vector and build_classic_dir_vector.
	Update the parameters of initialize_data_dependence_relation and
	compute_all_dependences.  Print the statistics from datadep_stats.
	(analyze_all_data_dependences): Static.  Not used until the pass for
	checking the data dependences is contributed.
	* tree-data-ref.h (ddr_p, DEF_VEC_P(ddr_p),
	DEF_VEC_ALLOC_P(ddr_p,heap)): ... here.
	(initialize_data_dependence_relation, compute_affine_dependence,
	analyze_all_data_dependences, compute_subscript_distance): Removed.
	(print_direction_vector): New.
	* lambda.h (gcd): ... here.
	(lambda_vector_gcd): Moved here from gcd_vector.
	* lambda-code.c (gcd, gcd_vector): Removed.
	(lambda_compute_target_space): Use lambda_vector_gcd.  Fix formatting.
	* Makefile.in (tree-vect-patterns.o): Depends on TREE_DATA_REF_H.

2006-02-20  Diego Novillo  <dnovillo@redhat.com>

	* ipa-type-escape.c: Tidy some comments and white space.
	* tree-ssa-operands.c: Likewise.

2006-02-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/25879
	* tree-pretty-print.c (debug_tree_chain): Walk the chains.
	(dump_decl_name): Do not walk the decl tree chains.
	* tree-pass.h (TDF_CHAIN): Remove.

2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Makefile.in (C): Remove
	(PROTO): Remove
	(.PHONY): Remove C and PROTO

2006-02-20  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26236
	* doc/c-tree.texi (INTEGER_TYPE): Remove reference to the now
	deprecated CHAR_TYPE tree code.

2006-02-20  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac (target_list): Add install-info, dvi, html.
	* configure: Regenerate.

	* ada/Make-lang.in, cp/Make-lang.in, fortran/Make-lang.in,
	java/Make-lang.in, objc/Make-lang.in, objcp/Make-lang.in,
	treelang/Make-lang.in: Do not use double-colon rules.

2006-02-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (struct tree_memory_tag): Add is_used_alone member.
	(TMT_USED_ALONE): New macro.
	* tree-pass.h (PROP_tmt_usage): New property.
	(TODO_update_tmt_usage): New todo.
	* tree-ssa-alias.c (updating_used_alone): New variable.
	(recalculate_used_alone): New function.
	(compute_may_aliases): Set updating_used_alone, call
	recalculate_used_alone.
	* tree-sra.c (pass_sra): Note that this pass destroys
	PROP_tmt_usage, and add TODO_update_tmt_usage.
	* tree-ssa-forwprop.c (pass_forwprop): Ditto.
	* tree-flow.h (updating_used_alone): Prototype.
	(recalculate_used_alone): Ditto.
	* passes.c (execute_todo): Add code to set updating_used_alone,
	and call recalculate.
	* tree-ssa-operands.c (add_virtual_operand): Only append bare def
	for clobber if used alone, and add assert to verify used_alone
	status.

2006-02-20  Angel Nunez Mencias  <anunez@de.ibm.com>

	* config/s390/s390.c (legitimize_pic_address): Assertions checking
	for non tls symbols added.
	(legitimize_address): Do nothing for PLUS expressions if one of the
	addends is a tls symbol reference.

2006-02-20  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/25476

	* Makefile.in (LDFLAGS): Define from autoconf substitution.

	* Makefile.in (BOOTSTRAPPING): New.
	(quickstrap): New definition if BOOTSTRAPPING=yes.

	* Makefile.in (CONFIG_LANGUAGES): Substitute all_selected_languages.
	* configure.ac: Substitute all_selected_languages with the languages
	that were configured.  For all the other variables except
	lang_specs_files, include all the languages in the tree.
	* configure: Regenerate.

	* Makefile.in (stmp-fixinc): Copy includes from the prev-gcc directory,
	if there is one.  Run the commands to run fixincludes in the same
	subshell.

	* doc/makefile.texi: Document new makefile targets from toplevel bootstrap.
	* doc/install.texi: Document exact conventions for searching target tools.
	Document --with-build-time-tools.  Document toplevel bootstrap.  Document
	something more about building an Ada cross-compiler.  Don't list GNU Make
	requirements which affect all platforms.

2006-02-19  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/19543
	* varasm.c (compare_constant) <INTEGER_CST>: Integer constants are
	only equivalent if the have both the same mode and precision.

2006-02-20  Ben Elliston  <bje@au.ibm.com>

	* doc/tree-ssa.texi (Interfaces): Describe low vs. high GIMPLE.

2006-02-19  Roger Sayle  <roger@eyesopen.com>
	    Steven Bosscher  <stevenb.gcc@gmail.com>

	* gcse.c (want_to_gcse_p): On STACK_REGS targets, look through
	constant pool references to identify stack mode constants.
	* rtlanal.c (constant_pool_constant_p): New predicate to check
	whether operand is a floating point constant in the pool.
	* rtl.h (constant_pool_constant_p): Prototype here.
	* loop.c (scan_loop): Avoid hoisting constants from the constant
	pool on STACK_REGS targets.
	(load_mems): Likewise.
	* loop-invariant.c (get_inv_cost): Make hoisting constant pool
	loads into x87 registers expensive in terms of register pressure.

2006-02-19  Roger Sayle  <roger@eyesopen.com>

	* gthr-posix.h: On Tru64, map __gthr_foo as a weak reference to
	__foo and not foo when _PTHREAD_USE_MANGLED_NAMES_ is defined.

2006-02-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (TARGET_ASM_OUTPUT_ANCHOR): Define.
	* config/rs6000/rs6000.c (rs6000_xcoff_asm_output_anchor): Define.

2006-02-19  Daniel Berlin  <dberlin@dberlin.org>

	* doc/invoke.texi: Document -fipa-pta.
	* common.opt: Add ipa-pta option.
	* tree-ssa-structalias.c (DONT_PROPAGATE_WITH_ANYTHING): Removed.
	(do_sd_constraint): Enable DONT_PROPAGATE_WITH_ANYTHING code.
	(do_ds_constraint): Ditto.
	(get_constraint_for): Only add to referenced_vars if
	referenced_vars exists.
	(insert_into_field_list): Rewrite to do this unsorted.
	(insert_into_field_list_sorted): Rename old insert_into_field_list
	to this.
	(create_function_info_for): Use insert_into_field_list_sorted.
	(create_variable_info_for): Rewrite so it uses unsorted version,
	since the field list is sorted.
	(intra_create_variable_infos): Only add to referenced_vars if
	referenced_vars exists.
	(ipa_pta_execute): Init heapvars, and delete when done.
	* passes.c (init_optimization_passes): Add call to pass_ipa_pta.

2006-02-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi: Add missing `@samp'.

2006-02-18  Andrew Pinski <pinskia@physics.uc.edu>

	* config/rs6000/darwin.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P):
	Use the arguments.

2006-02-18  Mark Wielaard  <mark@klomp.org>

	* doc/contrib.texi (Contributors): Add classpath/libgcj hackers
	who added new 4.1 features, bug fixes and integration support.

2006-02-18  David Edelsohn  <edelsohn@gnu.org>

	PR target/26350
	* config/rs6000/rs6000.md (extenddftf2): Force 0.0 to validized
	MEM for ABI_V4 pic.

2006-02-18  Richard Sandiford  <richard@codesourcery.com>

	* cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
	* emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
	(copy_insn_1): Likewise.  Don't copy each field individually.
	Reindent.
	* read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
	of RTX_SIZE.
	* reload1.c (eliminate_regs): Use shallow_copy_rtx.
	* rtl.c (rtx_size): Rename variable to...
	(rtx_code_size): ...this.
	(rtx_size): New function.
	(rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
	(copy_rtx): Use shallow_copy_rtx.  Don't copy each field individually.
	Reindent.
	(shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
	* rtl.h (rtx_code_size): New variable.
	(rtx_size): Change from a variable to a function.
	(RTX_SIZE): Rename to...
	(RTX_CODE_SIZE): ...this.

	PR target/9703
	PR tree-optimization/17106
	* doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
	(Anchored Addresses): New section.
	* doc/invoke.texi (-fsection-anchors): Document.
	* doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
	(SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
	* hooks.c (hook_bool_mode_rtx_false): New function.
	* hooks.h (hook_bool_mode_rtx_false): Declare.
	* gengtype.c (create_optional_field): New function.
	(adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
	SYMBOL_REF_IN_BLOCK_P is true.
	* target.h (output_anchor, use_blocks_for_constant_p): New hooks.
	(min_anchor_offset, max_anchor_offset): Likewise.
	(use_anchors_for_symbol_p): New hook.
	* toplev.c (compile_file): Call output_object_blocks.
	(target_supports_section_anchors_p): New function.
	(process_options): Check that -fsection-anchors is only used on
	targets that support it and when -funit-at-a-time is in effect.
	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
	if the decl doesn't have one.
	* dwarf2out.c: Remove instantiations of VEC(rtx,gc).
	* expr.c (emit_move_multi_word, emit_move_insn): Pass the result
	of force_const_mem through use_anchored_address.
	(expand_expr_constant): New function.
	(expand_expr_addr_expr_1): Call it.  Use the same modifier when
	calling expand_expr for INDIRECT_REF.
	(expand_expr_real_1): Pass DECL_RTL through use_anchored_address
	for all modifiers except EXPAND_INITIALIZER.  Use expand_expr_constant.
	* expr.h (use_anchored_address): Declare.
	* loop-unroll.c: Don't declare rtx vectors here.
	* explow.c: Include output.h.
	(validize_mem): Call use_anchored_address.
	(use_anchored_address): New function.
	* common.opt (-fsection-anchors): New switch.
	* varasm.c (object_block_htab, anchor_labelno): New variables.
	(hash_section, object_block_entry_eq, object_block_entry_hash)
	(use_object_blocks_p, get_block_for_section, create_block_symbol)
	(use_blocks_for_decl_p, change_symbol_section): New functions.
	(get_variable_section): New function, split out from assemble_variable.
	(make_decl_rtl): Create a block symbol if use_object_blocks_p and
	use_blocks_for_decl_p say so.  Use change_symbol_section if the
	symbol has already been created.
	(assemble_variable_contents): New function, split out from...
	(assemble_variable): ...here.  Don't output any code for
	block symbols; just pass them to place_block_symbol.
	Use get_variable_section and assemble_variable_contents.
	(get_constant_alignment, get_constant_section, get_constant_size): New
	functions, split from output_constant_def_contents.
	(build_constant_desc): Create a block symbol if use_object_blocks_p
	says so.  Or into SYMBOL_REF_FLAGS.
	(assemble_constant_contents): New function, split from...
	(output_constant_def_contents): ...here.  Don't output any code
	for block symbols; just pass them to place_section_symbol.
	Use get_constant_section and get_constant_alignment.
	(force_const_mem): Create a block symbol if use_object_blocks_p and
	use_blocks_for_constant_p say so.  Or into SYMBOL_REF_FLAGS.
	(output_constant_pool_1): Add an explicit alignment argument.
	Don't switch sections here.
	(output_constant_pool): Adjust call to output_constant_pool_1.
	Switch sections here instead.  Don't output anything for block symbols;
	just pass them to place_block_symbol.
	(init_varasm_once): Initialize object_block_htab.
	(default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
	(default_asm_output_anchor, default_use_aenchors_for_symbol_p)
	(place_block_symbol, get_section_anchor, output_object_block)
	(output_object_block_htab, output_object_blocks): New functions.
	* target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
	(TARGET_ASM_OUT): Include it.
	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
	(TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
	(TARGET_INITIALIZER): Include them.
	* rtl.c (rtl_check_failed_block_symbol): New function.
	* rtl.h: Include vec.h.  Declare heap and gc rtx vectors.
	(block_symbol, object_block): New structures.
	(rtx_def): Add a block_symbol field to the union.
	(BLOCK_SYMBOL_CHECK): New macro.
	(rtl_check_failed_block_symbol): Declare.
	(SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
	(SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
	(SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
	* output.h (output_section_symbols): Declare.
	(object_block): Name structure.
	(place_section_symbol, get_section_anchor, default_asm_output_anchor)
	(default_use_anchors_for_symbol_p): Declare.
	* Makefile.in (RTL_BASE_H): Add vec.h.
	(explow.o): Depend on output.h.
	* config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
	(TARGET_MAX_ANCHOR_OFFSET): Likewise.
	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
	(rs6000_use_blocks_for_constant_p): New function.

2006-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi (hppa*-hp-hpux*): Update for 4.1.0.

2006-02-18  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/25680
	* tree-ssa-ccp.c (ccp_fold): Handle store CCP of REALPART_EXPR and
	IMAGPART_EXPR.

2006-02-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow.h (struct var_ann_d): Rename field is_alias_tag to
	is_aliased.
	Update all users.

2006-02-18  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26334
	* stmt.c (decl_overlaps_hard_reg_set_p): Use DECL_HARD_REGISTER
	instead of DECL_REGISTER.

2006-02-18  Olivier Hainque  <hainque@adacore.com>

	PR ada/13408
	* pa.h (WIDEST_HARDWARE_FP_SIZE): Define.

2006-02-18  Joseph S. Myers  <joseph@codesourcery.com>

	PR target/24837
	* config.gcc: Define UCLIBC_DEFAULT to 0 or 1.
	* opth-gen.awk: Handle Var and InverseMask together.
	* config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc).
	* config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT.
	(TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC.
	(CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc
	used together.
	(UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	* config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER.
	* config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to
	TARGET_GLIBC.
	* config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option.
	* config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	(TARGET_C99_FUNCTIONS): Don't define.
	* config/i386/linux.h (DYNAMIC_LINKER): Rename to
	GLIBC_DYNAMIC_LINKER.
	(SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER.
	* config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
	LINUX_DYNAMIC_LINKER64.
	* config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32,
	UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64
	and LINUX_DYNAMIC_LINKER32.
	* config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to
	TARGET_GLIBC.
	* config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise.
	(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64,
	UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
	CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	(LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32.
	(LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64.
	* config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE.
	* config/s390/linux.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
	LINUX_DYNAMIC_LINKER64.
	* config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/sparc/linux.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
	* config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32,
	UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	(LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32.
	(LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64.
	(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
	* config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* doc/invoke.texi (-muclibc): Remove caveat about supported
	targets.

2006-02-17  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>

	* doc/cpp.texi (__TIMESTAMP__): Document.

2006-02-17  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/25600
	* fold-const.c (fold_binary): Fold (X >> C) != 0 into X < 0 when
	C is one less than the width of X (and related transformations).
	* simplify-rtx.c (simplify_unary_operation_1): Transform
	(neg (lt x 0)) into either (ashiftrt X C) or (lshiftrt X C)
	depending on STORE_FLAG_VALUE, were C is one less then the
	width of X.

2006-02-17  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26341
	* tree-ssa-operands.c (add_virtual_operand): Remove assert
	about NAME_MEMORY_TAG's.

2006-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/26255
	* pa.md: Create separate HI and QI move patterns for 32-bit and 64-bit
	with hardware float support, and software float support.  Add fcpy
	alternative to hardware patterns.  Add alternatives to copy between
	general and floating-point registers to the 32-bit pattern.
	* pa.c (pa_secondary_reload): Don't abort if reload tries to find a
	secondary reload to load a QI or HI mode constant into a floating
	point register.
	* pa32-regs.h (VALID_FP_MODE_P): Allow QImode and HImode.
	* pa64-regs.h (VALID_FP_MODE_P): Likewise.

2006-02-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/26272
	* config/rs6000/darwin.md (load_macho_picbase_si): Add
	pc to the pattern.
	(load_macho_picbase_di): Likewise.

2006-02-16  Jeff Law  <law@redhat.com>

	* tree-vrp.c (set_value_range_to_nonnegative): New function.
	(vrp_expr_computes_nonnegative, ssa_name_nonnegative_p): Likewise.
	(ssa_name_nonzero_p): Likewise.
	(get_value_range): Return NULL if VRP is not running.
	(extract_range_from_expr): Fallback to tree_expr_XXX_p if
	VRP routines do not discover a range.
	(vrp_finalize): Clear VR_VALUE to indicate VRP is not running.
	* tree.h (ssa_name_nonzero_p, ssa_name_nonnegative_p): Prototype.
	* fold-const.c (tree_expr_nonzero_p): For SSA_NAMEs, query VRP.
	(tree_expr_nonnegative_p): Similarly.
	* tree-ssa-dom.c (nonzero_vars, nonzero_vars_stack): Remove.
	(restore_nonzero_vars_to_original_value): Remove.
	(unsafe_associative_fp_binop): Remove.
	(tree_ssa_dominator_optimize): Remove initialization and
	finalization of nonzero_vars and nonzero_vars_stack.
	(dom_opt_initialize_block): No longer push marker on
	nonzero_vars_stack.
	(dom_opt_finalize_block): No longer call
	restore_nonzero_vars_to_original_value.
	(record_equivalences_from_phis): No longer look for
	nonzero PHI arguments.
	(cprop_into_successor_phis): No longer propagate nonzero
	property into PHI arguments.  Lose unused argument.  Caller
	updated.
	(record_equivalences_from_stmt): No longer record nonzero
	values for SSA_NAMEs.
	(lookup_avail_expr): No longer use nonzero_vars.

	* stor-layout.c (set_sizetype): Set TYPE_MAX_VALUE properly
	for sizetype when sizetype is unsigned.

2006-02-16  Denis Nagorny <denis_nagorny@linux.intel.com>

	PR rtl-optimization/25603
	* reload.c (reg_inc_found_and_valid_p): New. Check REG_INC note.
	(regno_clobbered_p): Use it. Reusing SETS argument for REG_INC case.
	* reload1.c (choose_reload_regs): Added call of regno_clobbered_p
	with new meaning of SETS.

2006-02-16  Joseph S. Myers  <joseph@codesourcery.com>

	PR target/20353
	PR target/24578
	PR target/24837
	* config/linux.opt: New file.
	* config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC.
	* config.gcc (*-*-linux*): Define extra_options.
	(*-*-*uclibc*): Define UCLIBC_DEFAULT.
	(arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi.
	* config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to
	GLIBC_DYNAMIC_LINKER.
	* config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise.
	(LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* doc/invoke.texi (GNU/Linux Options): New section.

2006-02-16  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (setjmp): Rewrite.
	(setjmp_32): Delete.
	(setjmp_64): Likewise.

2006-02-16  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-operands.c (access_can_touch_variable): Fix typo in
	 previous change.

2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>

	* loop-invariant.c (invariant_for_use, check_dependencies): Fail for
	read-write uses.

2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26296
	* Makefile.in (loop-invariant.c): Add except.h dependency.
	* loop-invariant.c: Include except.h.
	(find_invariant_insn): Ignore insns satisfying can_throw_internal.

2006-02-16  Paul Brook  <paul@codesourcery.com>

	* reload1.c (emit_reload_insns): Invalidate dead input registers used
	for reloads.

2006-02-16  Bernd Schmidt  <bernd.schmidt@analog.com>

	PR rtl-optimization/25636
	* local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
	when deciding whether an insn is an initializing insn.

2006-02-15 Daniel Berlin  <dberlin@dberlin.org>

	* tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
	(tree_code_size): Ditto.
	* tree.h (struct tree_memory_tag): Remove parent_var.
	(struct tree_struct_field_tag): New.
	(SFT_OFFSET): New.
	(SFT_SIZE): New.
	(union tree_node): Add sft member.
	* tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY
	specially here.
	(create_sft): Add size and offset argument, set SFT_OFFSET and
	SFT_SIZE.
	(create_overlap_variables_for): Update for SFT_OFFSET/SFT_SIZE.
	* treestruct.def: Add TS_STRUCT_FIELD_TAG.
	* tree-flow-inline.h (get_subvar_at): Update for
	SFT_OFFSET/SFT_SIZE.
	(var_can_have_subvars): Ditto.
	(overlap_subvar): Ditto.
	* print-tree.c (print_node): Print out interesting things for
	SFT's.
	* tree-flow.h (struct subvar): Remove offset and size members.
	* tree-ssa-operands.c (get_expr_operands): Update for
	get_indirect_ref_operands changes.
	(get_indirect_ref_operands): Call add_virtual_operand instead of
	add_stmt_operand.  Only recurse on base var if requested.
	(access_can_touch_variable): New function.
	(add_stmt_operand): Split virtual operand handling into ...
	(add_virtual_operand): Here.  Add offset, size, and for_clobber
	arguments.  Prune alias sets.
	(add_call_clobber_ops): Call add_virtual_operand.

2006-02-15  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26300
	* combine.c (make_extraction): Bail out if ORIG_POS is negative.

	* tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather
	than TREE_CODE as index into omp_clause_num_ops array.

2006-02-15  Uttam Pawar  <uttamp@us.ibm.com>

	PR rtl-optimization/26184
	* modulo-sched.c (generate_reg_moves): Free bitmap vector
	uses_of_defs.
	* modulo-sched.c (sms_schedule): Free g_arr pointer.
	* modulo-sched.c (sms_schedule_by_order): Free bitmap pointers
	must_precede, must_follow and tobe_scheduled.

	PR other/26147
	* opts.c (common_handle_option): Free new_option pointer.
	* df-core.c (df_analyze): Free postorder pointer.

2006-02-15  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>

	* Makefile.in: Fix the examples about the use of stamps

2006-02-15  Michael Matz  <matz@suse.de>

	PR middle-end/22275

	* stor-layout.c (layout_decl): Zero-width bitfields aren't
	influenced by maximum_field_alignment or DECL_PACKED.
	(update_alignment_for_field): Ditto.
	(place_field): Ditto.
	* doc/extend.texi (<#pragma pack>, <Type Attributes>): Document
	this behaviour.

2006-02-15  Paolo Bonzini  <bonzini@gnu.org>

	* cfg.c (dump_flow_info): Get dump flags as an additional parameter.
	(debug_flow_info): Pass it.
	* alias.c (rest_of_handle_cfg): Adjust calls to dump_flow_info.
	* bb-reorder.c (reorder_basic_blocks): Likewise.
	* cfgcleanup.c (rest_of_handle_jump2): Likewise.
	* cse.c (rest_of_handle_cse, rest_of_handle_cse2): Likewise.
	* flow.c (life_analysis, recompute_reg_usage): Likewise.
	* gcse.c (gcse_main, bypass_jumps): Likewise.
	* ifcvt.c (rest_of_handle_if_conversion): Likewise.
	* local-alloc.c (rest_of_handle_local_alloc): Likewise.
	* loop-init.c (rtl_loop_init, rtl_loop_done): Likewise.
	* profile.c (compute_branch_probabilities, branch_prob): Likewise.
	* rtl.h (dump_flow_info): Adjust prototype.
	* tracer.c (rest_of_handle_tracer, tracer): Likewise.
	* var-tracking.c (variable_tracking_main): Likewise.
	* passes.c (execute_todo): Obey TDF_BLOCKS for RTL.
	* tree-dump.c (enable_rtl_dump_file): Enable the details and blocks
	options.

2006-02-15  Marcin Dalecki <martin@dalecki.de>

	* tree-ssa-dom.c (dom_thread_across_edge): fix tag expression
	construction.

2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/26209
	* tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
	* tree-cfgcleanup.c (cleanup_control_flow): Remove dead
	eh edges.
	* tree-cfg.c (replace_uses_by): Do not alter cfg.

2006-02-14  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/23670
	* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Optimize (X&Y)|Y into
	(X,Y) and the corresponding symmetry related transformations.
	(fold_binary) <BIT_AND_EXPR>: Likewise, optimize (X|Y)&Y into
	(X,Y) and its symmetry related transformations.

2006-02-14  Roger Sayle  <roger@eyesopen.com>

	* dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU
	and GEU.

2006-02-14  Adam Nemet  <anemet@caviumnetworks.com>

	* simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE.

2006-02-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR bootstrap/26053
	* configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers
	support COMDAT group.
	* configure: Regenerate.

2006-02-14  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/26279
	PR middle-end/26280
	PR middle-end/26283
	* dojump.c (do_compare_rtx_and_jump): Handle multi-word LE.

2006-02-14  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26260

	* doc/invoke.texi (max-fields-for-field-sensitive): Document
	param.
	* params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
	* params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
	* tree-ssa-structalias.c (create_variable_info_for): Use
	MAX_FIELDS_FOR_FIELD_SENSITIVE.

2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>

	* doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
	Document.
	* tree-ssa-loop-niter.c (number_of_iterations_ne,
	number_of_iterations_lt, number_of_iterations_cond): Remember the shape
	of the ending condition.
	* tree-ssa-loop-manip.c: Include params.h.
	(build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
	tree_unroll_loop): New functions.
	* tree-pass.h (pass_loop_prefetch): Declare.
	* loop.c (rest_of_handle_loop_optimize): Test for
	-fprefetch-loop-arrays-rtl.
	* tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
	* timevar.def (TV_TREE_PREFETCH): New timevar.
	* tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
	pass_loop_prefetch): New.
	* tree-cfgcleanup.c: Include tree-scalar-evolution.h.
	(cleanup_tree_cfg_loop): Call scev_reset.
	* common.opt (fprefetch-loop-arrays-rtl): Add.
	* tree-ssa-loop-prefetch.c: New file.
	* tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
	(new_temp_expr_table): Initialize expr_vars.
	(free_temp_expr_table): Cleanup expr_vars.
	(check_replaceable, find_replaceable_in_bb): Prevent accumulating
	expressions from being merged into one.
	* tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
	(struct tree_niter_desc): Add control, bound and cmp fields.
	(tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
	Declare.
	* Makefile.in (tree-ssa-loop-prefetch.o): Add.
	(tree-cfgcleanup.o): Add SCEV_H dependency.
	(tree-ssa-loop-manip.o): Add PARAMS_H dependency.
	* passes.c (init_optimization_passes): Add pass_loop_prefetch.

2006-02-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26258
	* tree-ssa-structalias.c (find_func_aliases): Handle aggregates
	in PHI argument processing.

2006-02-13  Adam Nemet  <anemet@caviumnetworks.com>

	* simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: Return
	new expression in the requested machine mode.

2006-02-13  Roger Sayle  <roger@eyesopen.com>

	* optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx
	directly, instead let do_compare_rtx_and_jump handle this for us.
	* expr.c (expand_expr_real_1): Likewise.
	* dojump.c (do_jump_by_parts_greater_rtx): Make static.  Move
	before do_jump_by_parts_greater.
	(do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx.
	* expr.h (do_jump_by_parts_greater_rtx): Delete prototype.

2006-02-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa/quadlib.c: Use defines instead of enum qfcmp_magic.

2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26235
	* loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats.
	(invariant_expr_equal_p): Handle 'i' and 'n' formats.  Fail on unknown
	format.

2006-02-13  Jeff Law  <law@redhat.com>

	* tree-vrp.c (extract_range_from_binary_expr): Remove handling of
	TRUTH_XOR_EPR.

2006-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26092
	* gimplify.c (gimplify_call_expr): Don't call get_callee_fndecl
	twice if decl is a builtin.  When trying again, call get_callee_fndecl
	first to verify it is still a builtin.

2006-02-13  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (base_type_die): Don't add AT_name here.
	(subrange_type_die): Don't add AT_name here.
	(modified_type_die): Rearrange code flow.  Do add AT_name here.

2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26247
	PR rtl-optimization/26248
	* loop-invariant.c (may_assign_reg_p): Do not allow VOIDmode.

2006-02-13  Richard Sandiford  <richard@codesourcery.com>

	* config/floatunditf.c: Use if __LDBL_MANT_DIG__ == 113.
	* config/fixtfdi.c: Likewise.
	* config/fixunstfdi.c: Likewise.
	* config/floatditf.c: Likewise.

2006-02-13  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/24427
	* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Transform (X&C1)|C2
	into (X,C2) if C1 is a subset of the bits of C2.  Transform
	(X&C1)|C2 into X|C2 if C1|C2 == ~0.  Canonicalize (X&C1)|C2 as
	(X&(C1&~C2))|C2.
	<BIT_AND_EXPR>: Canonicalize (X|C1)&C2 as (X&C2)|(C1&C2).

2006-02-13  Josh Conner  <jconner@apple.com>

	PR target/25376
	* varasm.c (function_section): Check for section name before
	calling select_section on targets that define
	USE_SELECT_SECTION_FOR_FUNCTIONS.  On other targets, use
	unlikely_text_section instead of hot_function_section if
	first_function_block_is_cold.

2006-02-13  J"orn Rennecke <joern.rennecke@st.com>

	PR middle-end/25335
	* reload1.c (gen_reload): Also use find_replacement in UNARY_P case.

2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26222
	* function.c (assign_stack_temp_for_type): Do not reuse stack slots
	after tree->rtl expansion.
	* loop-invariant.c (move_invariant_reg): Use force_operand on rhs
	before passing it to emit_move_insn.

2006-02-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* doc/invoke.texi (-Write-strings): Document that it is enabled by
	default.
	* c.opt (-Wwrite-strings): Declare variable warn_write_strings.
	Clarify documentation.
	* c-common.h (warn_write_strings): Remove.
	* c-common.c (warn_write_strings): Likewise.
	* c-opts.c (c_common_init_options): Enable -Wwrite-strings by
	default for C++.

2006-02-12  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/25724
	* dojump.c (do_jump): Call do_compare_rtx_and_jump.
	(do_jump_parts_zero_rtx): New function renamed from
	do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
	(do_jump_parts_equality_rtx): New function split out from
	do_jump_parts_equality.  Old implementation renamed as above.
	Call do_jump_parts_zero_rtx if either operand is zero.
	(do_jump_parts_equality): Call do_jump_parts_equality_rtx to
	do all of the heavy lifting.
	(do_compare_rtx_and_jump): Handle multi-word comparisons by
	calling either do_jump_by_parts_greater_rtx or
	do_jump_by_parts_equality_rtx.
	* expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
	* expmed.c (do_cmp_and_jump): Now multi-word optimization has
	moved to do_compare_rtx_and_jump, call it directly.
	* stmt.c (do_jump_if_equal): Remove static prototype.  Add a
	mode argument.  Call do_compare_rtx_and_jump.
	(emit_case_nodes): Update calls to do_jump_if_equal.

2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26225
	* loop-invariant.c (may_assign_reg_p): Do not allow BLKmode operands.

2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26232
	* loop-invariant.c (find_invariant_insn): Ignore insns that set CC0.

2006-02-11  Jason Merrill  <jason@redhat.com>

	PR tree-opt/24365
	* tree-inline.c (declare_return_variable): Just don't use the
	modify target if it's a gimple complex reg and the return slot
	isn't.

2006-02-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/contrib.texi: Update my entry.

2006-02-10  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin.h (DBX_REGISTER_NUMBER): Define.

2006-02-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-inline.c (estimate_num_insns_1): Make OpenMP directives
	expensive.

2006-02-10  Zdenek Dvorak <dvorakz@suse.cz>

	* doc/invoke.texi (-floop-optimize2): Removed.
	* toplev.c (process_options): Remove handling of flag_loop_optimize2.
	* loop-init.c (gate_handle_loop2): Do not test flag_loop_optimize2.
	Test flag_branch_on_count_reg only if HAVE_doloop_end.
	* common.opt (floop-optimize2): Removed.
	(fmove-loop-invariants): Enabled by default.

2006-02-10  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-if-conv.c (combine_blocks): Free the result of
	get_loop_exit_edges.

2006-02-10  Jeff Law  <law@redhat.com>

	* fold-const.c (tree_expr_nonzero_p): Fix thinko.

	PR tree-optimization/26213
	* tree-ssa-threadedge.c (simplify_control_stmt_condition): Do not
	loop trying to follow SSA_NAME_VALUE chains.

2006-02-10  Richard Guenther  <rguenther@suse.de>

	* tree-dfa.c (get_ref_base_and_extent): When computing maxsize
	deal with structures that end in implicitly variable sized arrays.

2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/24762
	* df-scan.c (df_bb_refs_record): Record correct registers defined on
	eh edges.

2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c (struct loop_data, loop_data): Removed.
	(struct ivopts_data): Add regs_used field.
	(tree_ssa_iv_optimize_init): Do not allocate aux fields for loops.
	(ivopts_global_cost_for_size, determine_set_costs): Use data->regs_used
	instead of loop_data->regs_used;
	(free_loop_data): Do not free aux fields for loops.
	(tree_ssa_iv_optimize): Do not pass loops to tree_ssa_iv_optimize_init
	and tree_ssa_iv_optimize_finalize.

2006-02-09  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.h (FUNCTION_VALUE): Don't handle CHAR_TYPE.

2006-02-09  J"orn Rennecke <joern.rennecke@st.com>

	PR target/26141
	* sh.c (sh_gimplify_va_arg_expr): Don't change the result type when
	computing the effective result type.

2006-02-09  J"orn Rennecke <joern.rennecke@st.com>

	PR inline-asm/16194
	* tree.h (decl_overlaps_hard_reg_set_p) Don't declare.
	(tree_overlaps_hard_reg_set): Declare.
	* stmt.c (decl_overlaps_hard_reg_set_p): Now static.  Change return
	type and signature to match function type expected by walk_tree.
	(tree_overlaps_hard_reg_set): New function.
	(decl_conflicts_with_clobbers_p): Rename to:
	(tree_conflicts_with_clobbers_p).  Take HARD_REG_SET * argument.
	Use tree_overlaps_hard_reg_set.  Changed caller.
	* doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Replace
	decl_overlaps_hard_reg_set_p with tree_overlaps_hard_reg_set.
	* cris.c (cris_md_asm_clobbers): Likewise.

2006-02-09  Bernd Schmidt  <bernd.schmidt@analog.com>

	* reload1.c (emit_input_reload_insns): Delete code that tries to
	inherit using find_equiv_reg.

2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-common.h (flag_const_strings): Don't declare.
	* c-common.c (flag_const_strings): Remove.
	* c.opt (fconst_strings): Remove.
	* c-opts.c (c_common_handle_option): Remove <OPT_fconst_strings>.
	<OPT_Wwrite_strings>: Don't set flag_const_strings.
	(c_common_init_options): Don't set flag_const_strings.
	* doc/invoke.texi (-fno-const-strings): Remove documentation.

2006-02-09  Richard Earnshaw  <richard.earnshaw@arm.com>

	* arm.md (tlobits_cbranch): New pattern.
	* arm.h (arm_select_cc_mode): For thumb, only return CC_Nmode if
	testing a single bit.

2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/26179
	* tree-ssa-pre.c (create_component_ref_by_pieces):
	Handle RETURN_DECL like VAR_DECL.

2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/26134
	* fold-const.c (fold_indirect_ref_1): Fold
	"*(foo *)&complexfoo" to "__real__ complexfoo"
	and "((foo*)&complexfoo)[1]" to "__imag__ complexfoo".

2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-flow-inline.h (var_can_have_subvars):
	Volatile variables should not have subvariables.

2006-02-09  Diego Novillo  <dnovillo@redhat.com>

	PR 26180
	* tree-vrp.c (vrp_int_const_binop): Detect overflow when
	multiplying unsigned values.
	Tidy comments.

2006-02-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (tls_call_delay): Fix oversight.

2006-02-08  Jason Merrill  <jason@redhat.com>

	PR c++/25979
	* tree.def: Elaborate on difference from MODIFY_EXPR.
	* doc/c-tree.texi (INIT_EXPR): Likewise.
	* gimplify.c (internal_get_tmp_var): Use INIT_EXPR.
	(gimplify_decl_expr, gimplify_init_ctor_eval): Likewise.
	(gimplify_target_expr): Likewise.
	(gimplify_cond_expr): Remove target handling.
	(gimplify_modify_expr): Don't clobber INIT_EXPR code here.
	(gimplify_expr): Clobber it here.
	(gimplify_modify_expr_rhs): Push assignment into COND_EXPR here.
	Do return slot optimization if we have an INIT_EXPR.

	PR tree-opt/24365
	* tree-inline.c (declare_return_variable): Also clear
	DECL_COMPLEX_GIMPLE_REG_P as needed in the modify_dest case.

	PR c++/16405
	* gimplify.c (gimplify_modify_expr_rhs): Re-enable *& handling.

	PR middle-end/22439
	* gimplify.c (gimplify_one_sizepos): Fix typo.

2006-02-08  Jeff Law  <law@redhat.com>

	PR tree-optimization/21417
	* tree-ssa-threadedge.c (thread_across_edge): Reject threading
	across a backedge if the control statement at the end of the
	block is data dependent on other statements in the same block.
	(record_temporary_equivalences_from_stmts): Remove over-conservative
	test for threading across backedges.

	* tree-ssa-dce.c (remove_dead_statement): When removing a dead
	control statement, handle all three special cases in the same
	manner as they all have the same desired solution.  No longer
	special case edge flag updating when the post dominator is
	the exit block.

2006-02-08  Roger Sayle  <roger@eyesopen.com>

	* tree.def (CHAR_TYPE): Remove.
	* dbxout.c (dbxout_type): Delete dead handling of CHAR_TYPE.
	* dwarf2out.c (base_type_die, is_base_type): Likewise.
	(gen_type_die) <ARRAY_TYPE>: Remove handling of CHAR_TYPE arrays.
	(gen_string_type_die): Delete unreachable function.

	* tree-pretty-print.c (dump_generic_node): Don't handle CHAR_TYPE.
	* tree.c (build_int_cst_wide, type_contains_placeholder_1,
	type_hash_eq, variably_modified_type_p, walk_type_fields): Likewise.
	* tree.h (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Likewise.
	* builtins.c (type_to_class): Likewise.
	* fold-const.c (fold_convert, build_range_check,
	merge_ranges): Likewise.
	* expr.c (count_type_elements): Likewise.
	* c-pretty-print.c (pp_c_type_specifier): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* ipa-type-escape.c (type_to_consider): Likewise.
	* gimplify.c (omp_firstprivatize_type_sizes,
	gimplify_type_sizes): Likewise.
	* explow.c (promote_mode): Likewise.
	* tree-sra.c (is_sra_scalar_type): Likewise.
	* varasm.c (output_constant): Likewise.
	* tree-inline.c (remap_type_1): Likewise.
	* convert.c (convert_to_pointer, convert_to_real,
	convert_to_integer, convert_to_complex): Likewise.

2006-02-08  Daniel Berlin  <dberlin@dberlin.org>

	* df-scan.c (df_def_record_1): A set destination may
	be a parallel regardless of mode.

2006-02-08  Roger Sayle  <roger@eyesopen.com>

	PR target/22209
	* config/mips/mips.h (MIN_UNITS_PER_WORD): Don't define for libgcc.
	* config/mips/_tilib.c: Remove.
	* config/fixtfdi.c: New libgcc source file.
	* config/fixunstfdi.c: New source file.
	* config/floatditf.c: New source file.
	* config/floatunditf.c: New souce file.
	* config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source
	files above instead of config/mips/_tilib.c.
	* config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise.

2006-02-08  Jeff Law  <law@redhat.com>

	PR tree-optimization/26169
	* tree-vrp.c (execute_vrp): Perform any queued SSA updates before
	threading jumps.

2006-02-08  Zdenek Dvorak <dvorakz@suse.cz>

	* df.h (DF_REG_SIZE): Return the length of the initialized
	part of the array.

2006-02-08  Nathan Sidwell  <nathan@codesourcery.com>

	* config/m68k/lb1sf68.asm (__divsf3, __divdf3, __mulsf3,
	__muldf3): Return a correctly signed zero.

2006-02-08  Paolo Bonzini  <bonzini@gnu.org>

	* passes.c (register_one_dump_file): Accept the current properties
	instead of pass number.  Adjust call to dump_register.  Remove
	duplicated code.
	(register_dump_files): Now a wrapper around...
	(register_dump_files_1): ... this one.  Do not modify the pass
	structure.
	(next_pass_1): Cosmetic fix.
	(execute_todo): Keep second parameter only.  Use curr_properties
	instead of fetching it from the pass structure.  Check and set
	last_verified.
	(execute_one_pass): Handle TODO_set_props.  Use curr_properties
	instead of fetching it from the pass structure.  Fix calls to
	execute_todo.  Update curr_properties and initialize .vcg RTL dump
	after running the pass.  Reset last_verified.
	* tree-dump.c (dump_files): Renumber consecutively.  Put .cgraph dump
	at the beginning.
	(FIRST_AUTO_NUMBERED_DUMP): New.
	(dump_register): Remove "num" parameter, assign it within the
	function.
	(get_dump_file_name): Modify template for dumps.
	* tree-dump.h (dump_register): Adjust prototype.
	* tree-pass.h (enum tree_dump_index): Move cgraph at the beginning.
	(PROP_trees): Add PROP_gimple_lomp.
	(TODO_set_props): New.
	* gimple-low.c (pass_lower_cf): Do not destroy PROP_gimple_lcf.
	* tree-eh.c (pass_lower_eh): Do not destroy PROP_gimple_leh.
	* cfgexpand.c (pass_expand): Destroy PROP_trees.

2006-02-08  Jakub Jelinek  <jakub@redhat.com>

	* config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
	(sparc64-*-linux*): Likewise.
	* config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
	* config/sparc/t-linux: New file.
	* config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
	__floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
	(__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
	-m32 -mlong-double-128.

	* config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
	* config/alpha/t-linux: New file.
	* config/alpha/libgcc-alpha-ldbl.ver: New file.

	* config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
	__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
	(CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
	* config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
	__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
	(CPP_ARCH32_SPEC): Remove.

2006-02-07  Uttam Pawar  <uttamp@us.ibm.com>

	PR tree-optimization/26145
	* tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Free
	bbs pointer.

2006-02-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/26109
	* pa.c (attr_length_indirect_call): Don't return length 8 for distances
	>= 240000 when generating code for SOM runtime.
	(output_indirect_call): Don't use "b,l" instruction for indirect calls
	to $$dyncall when generating code for SOM runtime..

2006-02-07  Dirk Mueller  <dmueller@suse.com>

	PR c++/18150
	* doc/invoke.texi (-Wsequence-point): Update documentation
	that -Wsequence-point is implemented for C++ as well.

2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sol26.h (CPP_SUBTARGET_SPEC): Accept -pthread.
	* config/sol2.h (CPP_SUBTARGET_SPEC): Likewise.
	(LIB_SPEC): Likewise.
	* doc/invoke.texi (SPARC options): Document -pthread.

2006-02-07  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/i386.c (ix86_delegitimize_address): Support Darwin
	PIC addresses.

2006-02-07  Roger Sayle  <roger@eyesopen.com>

	* config/sparc/sparc.c (sparc_type_code): Don't handle CHAR_TYPE.
	Correct comment describing BOOLEAN_TYPE.

2006-02-07  Dirk Mueller  <dmueller@suse.com>

	* c.opt: C++ frontend supports -Wdiv-by-zero.
	* c-opts.c (c_common_handle_option): Remove dead case.

2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* configure.ac (TLS assembler check): Do not enable TLS by
	default on SPARC/Solaris before version 10.
	* configure: Regenerate.

2006-02-07  David Edelsohn  <edelsohn@gnu.org>

	* doc/invoke.texi (xl-compat): Document conversion and support
	routine names.

2006-02-07  Jeff Law  <law@redhat.com>

	* tree-vrp.c (find_conditional_asserts): Update comments.
	(simplify_stmt_for_jump_threading): New.
	(identify_jump_threads, finalize_jump_threads): New.
	(vrp_finalize): Call identify_jump_threads.
	(execute_vrp): Call finalize_jump_threads.
	* tree-ssa-dom.c (struct opt_stats_d): Remove num_iterations field.
	(vrp_element, vrp_data, vrp_element_p): Remove.
	(vrp_hash_elt, vrp_variables_stack): Remove.
	(vrp_hash, vrp_eq, record_range): Remove.
	(simplify_cond_and_lookup_avail_expr): Remove.
	(extract_range_from_cond): Remove.
	(thread_across_edge): Relocated into tree-ssa-threadedge.c.
	(simplify_stmt_for_jump_threading): New.
	(dom_thread_across_edge): New wrapper.
	(tree_ssa_dominator_optimize): No longer initialize or
	finalize any of the VRP datastructures.  Remove iteration
	step and simplify as a result of removal of iteration step.
	(pass_dominator): Perform a cfg cleanup after DOM.
	(dom_opt_finalize_block): Use the new common routines
	for threading jumps.  Simplify stack management slightly.
	No longer need to unwind VRP state.
	(record_equivalences_from_incoming_edge): No longer record
	VRP information.
	(eliminate_redundant_computations): No longer call
	simplify_cond_and_lookup_avail_expr.
	* tree-flow.h (potentially_threadable_block): Prototype.
	(thread_across_edge): Likewise.
	* Makefile.in (OBJS-common): Add tree-ssa-threadedge.o
	(tree-ssa-threadedge.o): Add dependencies.
	* tree-ssa-threadedge.c: New file.
	* passes.c (init_optimization_passes): Merge PHIs before
	calling VRP.  Run VRP again late in the SSA optimization pipeline.

2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* df-core.c (df_set_blocks): Do not dereference function pointers.
	(df_finish1): Likewise.
	(df_hybrid_search_forward): Likewise.
	(df_hybrid_search_backward): Likewise.
	(df_iterative_dataflow): Likewise.
	(df_analyze_problem): Likewise.
	(df_compact_blocks): Likewise.
	(df_dump): Likewise.
	* df-scan.c (df_rescan_blocks): Likewise.
	(df_record_entry_block_defs): Likewise.

	* genconditions.c (write_conditions): Guard the definition of
	'insn_conditions' with the check on GCC version.
	(write_writer): Guard the traversal 'insn_conditions' with
	the check on GCC version.

2006-02-07  Richard Guenther  <rguenther@suse.de>

	PR c++/26140
	Revert
	2006-01-30  Richard Guenther  <rguenther@suse.de>
	PR c++/23372
	* gimplify.c (gimplify_target_expr): Handle easy cases
	without creating a temporary.

2006-02-07  Pete Steinmetz  <steinmtz@us.ibm.com>

	* sched-rgn.c (compute_dom_prob_ps, compute_trg_info): Eradicate
	use of float in probability computations.  Use edge probabilities
	in place of statically computed probabilities.
	(min_spec_prob): New static variable.
	(schedule_insns): Initialize it.
	(GET_SRC_PROB): Removed.
	* doc/invoke.texi (min-sched-prob): Renamed to min-spec-prob.

2006-02-07  Alexandre Oliva  <aoliva@redhat.com>

	PR debug/24444
	* config/ia64/unwind-ia64.c: Revert last change.
	* config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Removed.
	(INCOMING_FRAME_SP_OFFSET): Define.

2006-02-06  Roger Sayle  <roger@eyesopen.com>

	* config/ia64/ia64.c (hfa_element_mode): Don't handle CHAR_TYPE.

2006-02-07  Ben Elliston  <bje@au.ibm.com>

	* config/i386/i386.c (ix86_scalar_mode_supported_p): New.
	(TARGET_SCALAR_MODE_SUPPORTED_P): Define hook.
	(classify_argument): Handle SDmode, DDmode, TDmode for 64-bit.
	(ix86_return_in_memory): Handle TDmode.
	(ix86_libcall_value): Handle SDmode, DDmode, TDmode.
	(ix86_value_regno): Return non-TDmode decimal float modes in %eax.

2006-02-06  Richard Sandiford  <richard@codesourcery.com>

	* reorg.c (dbr_schedule): Use dump_file instead of file.

2006-02-06  Steve Ellcey  <sje@cup.hp.com>

	PR target/25917
	* config/ia64/predicates.md (extr_len_operand): New predicate.
	* config/ia64/ia64.md (extv): Tighten constraints.
	(extzv): Ditto.
	(*tbit_and_2): Ditto.
	(*tbit_and_3): Ditto.
	(*tbit_or_2): Ditto.
	(*tbit_or_3): Ditto.
	(*bit_zero): Ditto.
	(*bit_one): Ditto.

2006-02-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/23359
	* config/i386/i386.md (trap): Use ASM_SHORT instead of .word.

2006-02-06  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (execute_vrp): Do not pass dump argument to.
	loop_optimizer_init and loop_optimizer_finalize
	* tree-ssa-sink.c (execute_sink_code): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree-ssa-loop.c (tree_loop_optimizer_init, tree_ssa_loop_init,
	tree_ssa_loop_done): Ditto.
	* tree-ssa-pre.c (init_pre, fini_pre): Ditto.
	* sched-ebb.c: Include output.h.
	(schedule_ebbs): Do not use dump argument.
	* value-prof.h (struct profile_hooks): Remove profile_dump_file.
	* loop.c (loop_dump_stream): Removed.
	(loop_optimize, rest_of_handle_loop_optimize): Do not use dump
	argument.
	(scan_loop, move_movables, find_and_verify_loops, mark_loop_jump,
	emit_prefetch_instructions, loop_bivs_find, loop_bivs_check,
	final_biv_value, loop_biv_eliminable_p, loop_givs_rescan,
	loop_iterations, strength_reduce, record_biv, record_giv,
	final_giv_value, check_final_value, check_ext_dependent_givs,
	combine_givs, check_dbra_loop, maybe_eliminate_biv, load_mems,
	try_copy_prop, loop_delete_insns, try_swap_copy_prop): Use
	dump_file instead of loop_dump_stream.
	* ddg.c (print_ddg_edge, print_ddg, vcg_print_ddg): Do not call
	argument dump_file.
	* reorg.c (dbr_schedule, rest_of_handle_delay_slots): Do not use
	dump argument.
	* flow.c (life_analysis, rest_of_handle_life): Ditto.
	* haifa-sched.c: Include output.h
	(schedule_insns, sched_init): Do not use dump argument.
	* mode-switching.c (optimize_mode_switching): Ditto.
	* modulo-sched.c (stats_file): Removed.
	(print_node_sched_params): Do not call argument dump_file.
	(sms_schedule_by_order, loop_canon_p, sms_schedule,
	rest_of_handle_sms): Do not use dump argument.  Use dump_file instead
	of stats_file.
	* cse.c (cse_main, rest_of_handle_cse, rest_of_handle_cse2): Do not
	use dump argument.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize,
	rtl_loop_init, rtl_loop_done): Ditto.
	* global.c (global_alloc, rest_of_handle_global_alloc): Ditto.
	* predict.c (combine_predictions_for_bb, tree_estimate_probability):
	Ditto.
	* recog.c (peephole2_optimize, rest_of_handle_peephole2): Ditto.
	* lcm.c (pre_edge_lcm, pre_edge_rev_lcm): Ditto.
	* regmove.c (fixup_match_1, fixup_match_2, regmove_optimize,
	rest_of_handle_regmove, rest_of_handle_stack_adjustments): Ditto.
	* emit-rtl.c (renumber_insns): Ditto.
	* cfgexpand.c (add_reg_br_prob_note, expand_gimple_cond_expr,
	expand_gimple_basic_block, tree_expand_cfg): Ditto.
	* regclass.c (regclass): Ditto.
	* tree-outof-ssa.c (analyze_edges_for_bb, perform_edge_inserts,
	remove_ssa_form, rewrite_out_of_ssa): Ditto.
	* reg-stack.c (compensate_edge, compensate_edges, convert_regs_1,
	convert_regs_2, convert_regs, reg_to_stack, rest_of_handle_stack_regs):
	Ditto.
	* sched-rgn.c (schedule_insns, rest_of_handle_sched): Ditto.
	* local-alloc.c (rest_of_handle_local_alloc): Do not pass dump_file
	to regclass.
	* gcse.c (gcse_file, debug_stderr): Removed.
	(gcse_main, bypass_jumps, rest_of_handle_jump_bypass,
	rest_of_handle_gcse): Do not use dump argument.
	(cprop_jump, cprop_insn, do_local_cprop, cprop, find_implicit_sets,
	one_cprop_pass, bypass_block, compute_pre_data, insert_insn_end_bb,
	pre_edge_insert, pre_insert_copy_insn, pre_delete, one_pre_gcse_pass,
	compute_code_hoist_vbeinout, compute_code_hoist_data,
	one_code_hoisting_pass, trim_ld_motion_mems, update_ld_motion_stores,
	compute_store_table, build_store_vectors, insert_insn_start_bb,
	insert_store, remove_reachable_equiv_notes, replace_store_insn,
	store_motion): Use dump_file instead of gcse_file.
	* ipa-type-escape.c (type_escape_execute): Remove debugging comments.
	* profile.c (profile_dump_file): Removed.
	(branch_prob): Use dump_file instead of profile_dump_file.
	* ipa.c (cgraph_remove_unreachable_nodes): Do not call argument
	dump_file.
	* tree-ssa-copy.c (dump_copy_of): Ditto.
	* rtl-factoring.c (rtl_seqabstr, rest_of_rtl_seqabstr): Do not pass
	dump file to life_analysis.
	* bt-load.c (branch_target_load_optimize): Ditto.
	* cfgcleanup.c (rest_of_handle_jump2): Do not pass dump_file to
	renumber_insns.
	* rtl.h (cse_main, renumber_insns, schedule_insns, schedule_ebbs,
	regclass, dbr_schedule): Declaration changed.
	* sched-int.h (sched_init): Declaration changed.
	* tree-profile.c (tree_profile_dump_file): Removed.
	(tree_profile_hooks): Removed profile_dump_file hook.
	* rtl-profile (rtl_profile_dump_file): Removed.
	(rtl_profile_hooks): emoved profile_dump_file hook.
	* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Declaration
	changed.
	* c-gimplify.c (c_genericize): Do not call local variable dump_file.
	* tree-cfg.c (build_tree_cfg): Ditto.
	* Makefile.in (haifa-sched.o, sched-ebb.o): Add output.h dependency.
	* basic-block.h (life_analysis, pre_edge_lcm, pre_edge_rev_lcm):
	Declaration changed.
	* config/sh/sh.c (sh_output_mi_thunk): Do not pass dump_file to
	life_analysis and schedule_insns.
	* config/m68hc11/m68hc11.c (m68hc11_reorg): Do not pass dump_file to
	life_analysis.
	* config/mt/mt.c (mt_machine_reorg): Do not pass dump_file to
	dbr_schedule.
	* config/mips/mips.c (mips_reorg): Ditto.
	* config/ia64/ia64.c (ia64_reorg): Do not pass dump_file to
	schedule_ebbs.

2006-02-06  Aldy Hernandez  <aldyh@redhat.com>

	* config/s390/s390.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
	(s390_mangle_fundamental_type): New.
	* config/s390/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
	Define.

	* config/alpha/alpha.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
	(alpha_mangle_fundamental_type): New.
	* config/alpha/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
	Define.

	* config/sparc/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
	Define.
	* config/sparc/linux64.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
	Define.
	* config/sparc/sparc.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
	(sparc_mangle_fundamental_type): New.

2006-02-06  Jakub Jelinek  <jakub@redhat.com>

	* config.gcc (s390-*-linux*): Add s390/t-linux to tmake_file.
	(s390x-*-linux*): Likewise.
	* config/s390/t-linux64 (SHLIB_MAPFILES): Removed.
	* config/s390/t-linux: New file.

2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>

	* config/i386/sync.md (sync_add<mode>, sync_sub<mode>, sync_ior<mode>,
	sync_and<mode>, sync_xor<mode>): Operand 0 is in-out.

2006-02-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (bb_value_sets_t): Add antic_safe_loads.
	(ANTIC_SAFE_LOADS): New macro.
	(find_or_generate_expression): Add prototype.
	(set_contains_value): Allow null set for sake of not always having
	to allocate ANTIC_SAFE_LOADS.
	(phi_translate): Move placement of AGGREGATE_TYPE_P check.
	Allow COMPONENT_REF too.
	(valid_in_set): Allow COMPONENT_REF.
	Check ANTIC_SAFE_LOADS too.
	(compute_antic_aux): Print out ANTIC_SAFE_LOADS.
	(compute_rvuse_and_antic_safe): Add ANTIC_SAFE computation, and
	rename.
	(can_PRE_operation): Add COMPONENT_REF.
	(create_component_ref_by_pieces): New function.
	(create_expression_by_pieces): Use create_component_ref_by_pieces.
	(insert_aux): Move AGGREGATE_TYPE_P check here.
	(compute_avail): Set bb local stmt uids.
	(pass_pre): Use TODO_update_ssa_only_virtuals.

2006-02-06  Ben Elliston  <bje@au.ibm.com>

	* configure.ac: Unconditionally disable decimal float by default.
	* configure: Regenerate.

2006-02-06  Ben Elliston  <bje@au.ibm.com>

	* read-rtl.c (read_name): Terminate reading on EOF.

2006-02-06  Ben Elliston  <bje@au.ibm.com>

	* dfp.c (decimal_real_arithmetic): Change second argument type
	from int to enum tree_code. Do not always return true, but now
	return result of any call to decimal_do helper functions.
	* dfp.h (decimal_real_arithmetic): Update prototype.

2006-02-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sol2-bi.h (SPARC_DEFAULT_CMODEL): Set to CM_MEDMID.

2006-02-05  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/25251
	* tree-cfg.c (cleanup_dead_labels): Also don't remove
	forced labels.

2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-vrp.c (cfg_loops): Removed.
	(adjust_range_with_scev, vrp_visit_assignment, execute_vrp):
	Use current_loops instead of cfg_loops.  Pass flags to
	loop_optimizer_init.
	* cfgloopmanip.c (fix_loop_structure): Update only available
	information.
	* tree-ssa-loop-ch.c (copy_loop_headers): Pass flags to
	loop_optimizer_init.
	* modulo-sched.c (build_loops_structure): Removed.
	(sms_schedule): Use loop_optimizer_init.
	* loop-init.c (loop_optimizer_init): Use flags to determine
	which properties of loops to prepare.
	(rtl_loop_init): Pass flags to loop_optimizer_init.
	* tree-ssa-sink.c (execute_sink_code): Ditto.
	* tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
	* tree-ssa-pre.c (init_pre): Ditto.
	* cfgloop.h (LOOPS_NORMAL): New.
	(loop_optimizer_init): Declaration changed.

2006-02-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa/x-ada-hpux10, pa/t-pa-hpux10, pa/t-pa-hpux11: New files.
	* config.gcc (hppa[12]*-*-hpux10*): Use pa/t-pa-hpux10 instead of
	pa/t-pa.
	* config.gcc (hppa[12]*-*-hpux11*): Use pa/t-pa-hpux11 instead of
	pa/t-pa.
	* config.host (hppa*-*-hpux10*): Use pa/x-ada-hpux10 instead of
	pa/x-ada.
	* pa/t-pa-hpux: Add lib2funcs.asm and quadlib.c rules.
	* pa/t-pa64: Delete quadlib.c rule.
	* pa/x-ada: Revert last change.
	* pa/t-pa: Revert last change.  Delete quadlib.c rule.

2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>

	PR rtl-optimization/26087
	* rtlanal.c (canonicalize_condition): Do not cross basic block
	boundaries.

2006-02-04  Alexandre Oliva  <aoliva@redhat.com>

	PR debug/24444
	* config/ia64/ia64.c: Include debug.h.
	(MAX_ARTIFICIAL_LABEL_BYTES): New.
	(ia64_label_after_insn, ia64_dwarf2out_def_steady_cfa): New.
	(IA64_CHANGE_CFA_IN_EPILOGUE): Define to 0.
	(process_epilogue, process_set, process_for_unwind_directive):
	Output unwind info only if requested.  Add CFA info if requested.
	Add new arguments as needed.  Adjust callers.
	* config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Override
	incorrect default.
	(DWARF2_FRAME_INFO): Define to zero.
	* config/ia64/unwind-ia64.c: Remove code that compensated for
	the CFA offset error fixed above.
	* config/ia64/t-ia64 (ia64.o): Depend on debug.h.
	* dwarf2out.c (DWARF2_FRAME_INFO): Define default.
	(dwarf2out_do_frame): Require nonzero DWARF2_UNWIND_INFO for
	-funwind-tables and -fexceptions to enable frame info.
	(dwarf2out_frame_init): Define initial CFA even if
	DWARF2_UNWIND_INFO is disabled.  Call initial_return_save if
	DWARF2_UNWIND_INFO is nonzero, not just defined.
	(dwarf2out_frame_finish): Output non-EH call frame info only
	if DWARF2_FRAME_INFO is nonzero.
	(convert_cfa_to_loc_list,
	compute_frame_pointer_to_cfa_displacement): Define even if
	unwind info is not supported.
	(gen_subprogram_die): Use the above unconditionally.  Remove
	legacy alternate code.
	* toplev.c (compile_file): Compile in call to
	dwarf2out_frame_finish if DWARF2_DEBUGGING_INFO is defined.
	(lang_dependent_init): Ditto for dwarf2out_frame_init.

2006-02-04  David Edelsohn  <edelsohn@gnu.org>
	    Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle
	IBM extended float format long double as "g" on powerpc*-linux.

2006-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/25926
	* pa/x-ada (X_ADA_CFLAGS): Define _X_HPUX10 on HP-UX 10.
	* pa/t-pa (TARGET_LIBGCC2_CFLAGS): Define _T_HPUX10 on HP-UX 10.

2006-02-03  Jason Merrill  <jason@redhat.com>

	PR c++/25979
	* gimplify.c (gimplify_modify_expr_rhs): Disable *& optimization for now.

	PR middle-end/25977
	* gimplify.c (gimplify_modify_expr_rhs): It's not always safe to do RVO
	on the return slot if it's an NRV.

2006-02-03  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c (enum use_type): Remove USE_OUTER.
	(dump_use, add_derived_ivs_candidates, determine_use_iv_cost,
	rewrite_use): Do not handle USE_OUTER.
	(find_interesting_uses_outer_or_nonlin, find_interesting_uses_outer,
	add_iv_outer_candidates, may_replace_final_value,
	determine_use_iv_cost_outer, rewrite_use_outer): Removed.
	(find_interesting_uses_op): Functionality of
	find_interesting_uses_outer_or_nonlin moved here.
	(find_interesting_uses_outside): Use find_interesting_uses_op.

2006-02-03  Alan Modra  <amodra@bigpond.net.au>

	PR target/25960
	* config/rs6000/darwin-ldouble.c (__gcc_qadd): Preserve -0.0 result.

2006-02-03  Andreas Krebbel  <krebbel1@de.ibm.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/25864
	* config/s390/2084.md ("x_fsimptf", "x_fmultf", "x_fdivtf",
	"x_floadtf", "x_ftrunctf", "x_ftruncdf"): New insn reservations.
	* config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): New functions.
	* config/s390/s390.c (struct processor_costs): Add mxbr, sqxbr, dxbr
	and dxr fields.
	(z900_cost, z990_cost, z9_109_cost): Values for the new fields added.
	(s390_rtx_costs): Use the new fields to calculate rtx costs.
	(s390_secondary_input_reload_class, s390_secondary_output_reload_class):
	Define secondary reloads for TFmode moves.
	(constant_modes): Add TFmode.
	(NR_C_MODES): Set to 8.
	* config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Add __LONG_DOUBLE_128__
	builtin define.
	(LONG_DOUBLE_TYPE_SIZE): Set to 128 or 64.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE, WIDEST_HARDWARE_FP_SIZE): Define.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS,
	CANNOT_CHANGE_MODE_CLASS): Consider TFmode.
	* config/s390/s390.md ("type" attribute): Add fsimptf, floadtf, fmultf,
	fdivtf, fsqrttf, ftrunctf, ftruncdf as possible values.
	(FPR mode macro): Add TFmode.
	(DSF mode macro): New.
	(<de>, <dee> mode attributes): Removed.
	(<xde>, <xdee>, <RRe>, <RXe>, <Rf> mode attributes): New.
	("*cmp<mode>_ccs_0", "*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs",
	"*cmp<mode>_ccs_ibm", "fix_trunc<FPR:mode><GPR:mode>2_ieee",
	"floatdi<mode>2", "floatsi<mode>2_ieee", "*add<mode>3",
	"*add<mode>3_cc", "*add<mode>3_cconly", "*add<mode>3_ibm",
	"*sub<mode>3", "*sub<mode>3_cc", "*sub<mode>3_cconly",
	"*sub<mode>3_ibm", "*mul<mode>3_ibm", "*fmadd<mode>", "*fmsub<mode>",
	"*div<mode>3", "*div<mode>3_ibm", "*neg<mode>2_cc",
	"*neg<mode>2_cconly", "*neg<mode>2", "*neg<mode>2_ibm",
	"*abs<mode>2_cc", "*abs<mode>2_cconly", "*abs<mode>2",
	"*abs<mode>2_ibm", "*negabs<mode>2_cc", "*negabs<mode>2_cconly",
	"*negabs<mode>2", "sqrt<mode>2"):
	Changed <de> to <xde>. R constraint replaced by <Rf>.
	("*mul<mode>3"): Changed <dee> to <xdee>. R constraint replaced by
	<Rf>.
	("fix_trunc<FPR:mode>di2"): 'FPR:' removed.
	("*fmadd<mode>", "*fmsub<mode>"): FPR mode replaced by DSF.
	("*movtf_64", "*movtf_31"): New insn definitions followed by 5
	splitters.
	("movtf", "reload_outtf", "reload_intf", "trunctfdf2", "trunctfsf2",
	"extenddftf2", "extendsftf2"): New expanders.
	("*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
	"*trunctfsf2_ibm", "*extenddftf2_ieee", "*extenddftf2_ibm",
	"*extendsftf2_ieee", "*extendsftf2_ibm"): New insn patterns.
	* config/s390/s390.opt (mlong-double-128, mlong-double-64):
	New options.
	* config/s390/t-crtstuff (TARGET_LIBGCC2_CFLAGS): Macro defined.
	* config/s390/libgcc-glibc.ver (__divtc3, __multc3, __powitf2,
	__fixtfti, __fixunstfti, __floattitf, __fixtfdi, __fixunstfdi,
	__floatditf): Add a GCC_4.1.0 symbol version tag.
	* doc/invoke.texi (-mlong-double-128, -mlong-double-64): Document
	the new options.

2006-02-02  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/25377
	* config/i386/i386.c (ix86_function_ok_for_sibcall):
	Use targetm.binds_local_p instead of TREE_PUBLIC.

2006-02-02  Roger Sayle  <roger@eyesopen.com>

	* tree.h (TYPE_STRING_FLAG): Document that this field may be used
	on INTEGER_TYPEs to indicate that it denotes a character type.
	* tree.c (build_common_tree_nodes): Set TYPE_STRING_FLAG on
	signed_char_type_node, unsigned_char_type_node and char_type_node.
	* dwarf2out.c (base_type_die): Treat CHAR_TYPE identically to
	INTEGER_TYPE.  Use TYPE_STRING_FLAG to decide whether to emit
	a DW_ATE_[un]signed_char instead of a DW_ATE_[un]signed.

2006-02-02  Zdenek Dvorak <dvorakz@suse.cz>
	    Daniel Berlin  <dberlin@dberlin.org>

	* tree-tailcall.c (arg_needs_copy_p): New function.
	(eliminate_tail_call): Use arg_needs_copy_p.
	(tree_optimize_tail_calls_1): Ditto. Also call add_virtual_phis.
	(add_virtual_phis): New function.

2006-02-02  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (sparc_output_scratch_registers): Use
	#ignore instead of #scratch for %g7 .register directive.

2006-02-02  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/sparc/freebsd.h (ENDFILE_SPEC): Add space to separate
	object files.

2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>

	* flow.c (calculate_global_regs_live): Assert that there aren't any
	EDGE_FAKE edges.

2006-02-02  Paolo Bonzini  <bonzini@gnu.org>

	* tree-flow-inline.h (bsi_after_labels): Rewrite, return
	what its name says.
	* lambda-code.c (perfect_nestify): Use bsi_insert_before on
	bsi_after_labels iterator.
	* tree-if-conv.c (find_phi_replacement_condition,
	replace_phi_with_cond_modify_expr): Likewise.
	* tree-scalar-evolution.c (scev_const_prop): Likewise.
	* tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Likewise.

2006-02-02  Diego Novillo  <dnovillo@redhat.com>

	* tree-inline.c (copy_tree_r): Also copy OMP_CLAUSE nodes.

2006-02-02  Diego Novillo  <dnovillo@redhat.com>

	PR 25990
	* tree-cfg.c (move_block_to_fn): Clear out the basic block
	array after growing it.

2006-02-01  Steve Ellcey  <sje@cup.hp.com>

	PR middle-end/24901
	* fold-const.c (fold_checksum_tree): Change type of buf.

2006-02-01  Bernd Schmidt  <bernd.schmidt@analog.com>

	* reload.c (push_secondary_reload): Initialize t_icode.

2006-02-01  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For
	-msoft-float -mlong-double-128 only issue a warning, but don't
	swich to DFmode long double.

2006-02-01  Hans-Peter Nilsson  <hp@axis.com>

	* cse.c (fold_rtx) <case RTX_COMM_COMPARE, RTX_COMPARE>: When arg1
	has a constant equivalent, iterate over equivalents for arg0,
	calling simplify_relational_operation and if there's a result
	cheaper than X, apply fold_rtx and return the result.

2006-02-01  Jan Hubicka  <jh@suse.cz>

	* opts.c (no_unit_at_a_time_default): New global variable.
	(decode_options): Use it.
	* opts.h (no_unit_at_a_time_default): Declare.

2006-02-01  Paul Brook  <paul@codesourcery.com>

	* function.c (assign_parm_setup_reg): Use function argument promotion
	rules.
	* expr.c (expand_expr_real_1): Use function argument promotion rules
	for PARM_DECLs.

2006-02-01  Steve Ellcey  <sje@cup.hp.com>

	* gcc.c (process_command): Change j to 'unsigned int'.

2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/26001
	* expr.c (expand_expr_real_1) <case ARRAY_REF>:
	Use the corrected index for the character
	out of the string constant.

2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>

	* mode-switching.c (optimize_mode_switching): Fix size
	allocated for bb_info[n_entities].

2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>

	* gcc.c (main): Correct type that is allocated for
	explicit_link_files.

2006-01-31  Jakub Jelinek  <jakub@redhat.com>

	* config/s390/s390.c (init_alignment_context): Set
	ALIAS_SET_MEMORY_BARRIER on the MEM.
	* config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Likewise.

2006-01-31  Uttam Pawar  <uttamp@us.ibm.com>

	PR middle-end/25933
	* loop-unroll.c (unroll_loop_runtime_iterations): Free
	dom_bbs pointer.
	* tree-ssa-live.c (type_var_init): Allocate bitmap after
	call to tpa_init.

2006-01-31  Marcin Dalecki  <martin@dalecki.de>

	* tree-vrp.c: Use XNEW/XCNEW allocation wrappers.
	* regrename.c: Ditto.
	* tree-ssa-loop-im.c: Ditto.
	* tree-dump.c: Ditto.
	* tree-complex.c: Ditto.
	* genrecog.c: Ditto.
	* tree-ssa-threadupdate.c: Ditto.
	* tracer.c: Ditto.
	* java/class.c: Ditto.
	* java/jcf-parse.c: Ditto.
	* java/resource.c: Ditto.
	* java/except.c: Ditto.
	* java/jvspec.c: Ditto.
	* java/jcf-write.c: Ditto.
	* java/jcf-path.c: Ditto.
	* java/gjavah.c: Ditto.
	* java/zextract.c: Ditto.
	* java/jcf-io.c: Ditto.
	* java/jcf.h: Ditto.
	* java/buffer.c: Ditto.
	* java/lang.c: Ditto.
	* java/parse-scan.y: Ditto.
	* java/lex.c: Ditto.
	* java/lex.h: Ditto.
	* cfgloopmanip.c: Ditto.
	* postreload-gcse.c: Ditto.
	* tree-ssa-loop-manip.c: Ditto.
	* postreload.c: Ditto.
	* tree-ssa-loop-ch.c: Ditto.
	* loop.c: Ditto.
	* ipa-cp.c: Ditto.
	* cppspec.c: Ditto.
	* diagnostic.c: Ditto.
	* final.c: Ditto.
	* genoutput.c: Ditto.
	* gcc.c: Ditto.
	* cfghooks.c: Ditto.
	* cfgloopanal.c: Ditto.
	* objc/objc-act.c: Ditto.
	* gcov.c: Ditto.
	* genextract.c: Ditto.
	* genautomata.c: Ditto.
	* pretty-print.c: Ditto.
	* genemit.c: Ditto.
	* cgraphunit.c: Ditto.
	* flow.c: Ditto.
	* df-scan.c: Ditto.
	* haifa-sched.c: Ditto.
	* dominance.c: Ditto.
	* dbxout.c: Ditto.
	* tree-ssa-loop-ivopts.c: Ditto.
	* df-core.c: Ditto.
	* mode-switching.c: Ditto.
	* modulo-sched.c: Ditto.
	* graph.c: Ditto.
	* ipa-pure-const.c: Ditto.
	* cse.c: Ditto.
	* fix-header.c: Ditto.
	* web.c: Ditto.
	* tree-stdarg.c: Ditto.
	* ipa-utils.c: Ditto.
	* loop-init.c: Ditto.
	* ipa-inline.c: Ditto.
	* cfganal.c: Ditto.
	* global.c: Ditto.
	* alloc-pool.c: Ditto.
	* dwarf2out.c: Ditto.
	* opts.c: Ditto.
	* genattrtab.c: Ditto.
	* tree-ssa-loop-ivcanon.c: Ditto.
	* predict.c: Ditto.
	* timevar.c: Ditto.
	* lcm.c: Ditto.
	* fortran/gfortranspec.c: Ditto.
	* regmove.c: Ditto.
	* local-alloc.c: Ditto.
	* langhooks.c: Ditto.
	* function.c: Ditto.
	* tree-vectorizer.c: Ditto.
	* gcse.c: Ditto.
	* ipa-type-escape.c: Ditto.
	* alias.c: Ditto.
	* tree-if-conv.c: Ditto.
	* profile.c: Ditto.
	* ipa.c: Ditto.
	* tree-data-ref.c: Ditto.
	* loop-unroll.c: Ditto.
	* treelang/treetree.c: Ditto.
	* calls.c: Ditto.
	* bt-load.c: Ditto.
	* ggc-common.c: Ditto.
	* except.c: Ditto.
	* coverage.c: Ditto.
	* cselib.c: Ditto.
	* tree-cfgcleanup.c: Ditto.
	* tree-ssa-pre.c: Ditto.
	* cfgcleanup.c: Ditto.
	* loop-invariant.c: Ditto.
	* loop-iv.c: Ditto.
	* ipa-prop.c: Ditto.
	* print-tree.c: Ditto.
	* conflict.c: Ditto.
	* ggc-page.c: Ditto.
	* sched-deps.c: Ditto.
	* regclass.c: Ditto.
	* tree-object-size.c: Ditto.
	* combine.c: Ditto.
	* bb-reorder.c: Ditto.
	* resource.c: Ditto.
	* var-tracking.c: Ditto.
	* cfgloop.c: Ditto.
	* df-problems.c: Ditto.
	* reg-stack.c: Ditto.
	* tlink.c: Ditto.
	* gccspec.c: Ditto.
	* sched-rgn.c: Ditto.
	* tree-ssa-structalias.c: Ditto.
	* tree-ssa-reassoc.c: Ditto.
	* config/darwin-c.c: Ditto.
	* config/darwin.c: Ditto.
	* config/arm/arm.c: Ditto.
	* cfgrtl.c: Ditto.
	* collect2.c: Ditto.
	* reload1.c: Ditto.

2006-01-31  Nicolas Pitre  <nico@cam.org>

	* arm.md (smaxsi3): Make aware of smax_m1.
	(smax_m1): New.

2006-01-31  Nathan Sidwell  <nathan@codesourcery.com>

	* config/m68k/lb1sf68.asm: Use moveq to load small constants.

2006-01-31  Richard Guenther  <rguenther@suse.de>

	* doc/invoke.texi (-msselibm): Document.
	* target.h (expand_library_builtin): New target hook.
	* builtins.c (expand_builtin): Use expand_library_builtin.
	(default_expand_library_builtin): New function.
	* gcc.c (LINK_GCC_MATH_SPEC): Define.
	(LINK_COMMAND_SPEC): Handle %(link_gcc_math).
	(link_gcc_math_spec): Declare.
	(static_specs): Add link_gcc_math_spec.
	* expr.h (default_expand_library_builtin): Declare.
	* target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
	(TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
	* config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
	* config/i386/i386.opt (msselibm): New target option.
	* config/i386/i386.c (ix86_builtin_function_variants): New array.
	(ix86_init_sse_abi_builtins): New function.
	(ix86_expand_library_builtin): Likewise.
	(TARGET_EXPAND_LIBRARY_BUILTIN): Define.
	(override_options): Handle error conditions wrt -msselibm.
	(ix86_builtins): Add function codes for SSE2 ABI builtins.
	(ix86_init_builtins): Call ix86_init_sse_abi_builtins.
	* doc/extend.texi (__builtin_sse2_*): Document new target specific
	builtins.

2006-01-31  Richard Guenther  <rguenther@suse.de>
	Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi (--disable-libgcc-math): Document.

2006-01-30  Marcin Dalecki  <martin@dalecki.de>

	* expr.h (expand_normal): new inline function.
	* builtins.c: use it, use EXPAND_NORMAL explicitely.
	* dojump.c: use it.
	* dwarf2out.c: use it.
	* expr.c: use it.
	* calls.c: use it.
	* expmed.c: use it.
	* except.c: use it.
	* config/sparc/sparc.c: use it.
	* config/i386/i386.c: use it.
	* config/rs6000/rs6000.c: use it.
	* config/arm/arm.c: use it.
	* config/mips/mips.c: use it.
	* stmt.c: use it, use EXPAND_NORMAL explicitely.

2006-01-30  Roger Sayle  <roger@eyesopen.com>

	* config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
	argv to the appropriate type.

2006-01-30  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Remove
	unreachable code.

2006-01-30  Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/26018
	* config/s390/s390.c (struct machine_function): New flag
	decomposed_literal_pool_addresses_ok_p.
	(s390_reorg): Set it before final stage of literal pool transforms.
	(s390_decompose_address): Only accept displacements of the form
	(minus (label_ref ...) (label_ref ...)) if that flag is set.

2006-01-30  Carlos O'Donell  <carlos@codesourcery.com>

	* optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
	the comparison routine return.

2006-01-30  Michael Matz  <matz@suse.de>

	* global.c (find_reg): Only evict for global regs.
	Take n_refs into account and dump more info.

2006-01-30  J"orn Rennecke <joern.rennecke@st.com>

	PR target/14798:
	* sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
	(pragma_trap, pragma_nosave_low_regs): Likewise.
	(current_function_anonymous_args): Likewise.
	(sh_deferred_function_attributes): New variable.
	(sh_deferred_function_attributes_tail): Likewise.
	(print_operand): For '@', look up trap_exit attribute.
	(calc_live_regs): Look up trapa_handler attribute.  For trapa
	handlers, save/restore fpscr, but don't do any other
	interrupt-specific saves.
	Don't save r0..r7 if the nosave_low_regs attribute is in effect.
	Fix check for partially saved registers to check for SHmedia.
	(sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
	(sh_output_function_epilogue): Don't clear any of the removed
	variables.
	(sh_insert_attributes): Don't check pragma_interrupt.
	Insert deferred attributes.  Check that interrupt attribute is
	present for other attributes that require its presence.
	(sh_attribute_table): Add new attributes trapa_handler and
	nosave_low_regs.
	(sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
	Don't check for pragma_interrupt.  Don't store argument.
	* sh.h (pragma_interrupt, sp_switch): Don't declare.
	(sh_deferred_function_attributes): Declare.
	(sh_deferred_function_attributes_tail): Likewise.
	* sh.md (sp_switch_1): Add operand.  Change generator caller.
	(sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
	(*return_i): Don't use when trap_exit attribute is in effect.
	(*return_trapa): New insn pattern.
	* sh-c.c: New file.
	* config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
	setting c_target_objs and cxx_target_objs.
	* t-sh: Add rule for sh-c.o.

2006-01-30  Richard Guenther  <rguenther@suse.de>

	PR c++/23372
	* gimplify.c (gimplify_target_expr): Handle easy cases
	without creating a temporary.

2006-01-30  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (safe_grow): Remove duplicated line.

2006-01-29  Diego Novillo  <dnovillo@redhat.com>

	PR 25874
	* omp-low.c (execute_expand_omp): Move CFG cleanup code ...
	(expand_omp): ... here.
	(expand_omp_parallel): Only remove barriers for combined
	parallel+workshare constructs.

2006-01-29  Eric Botcazou  <ebotcazou@adacore.com>

	Revert

	2005-11-09  Eric Botcazou  <ebotcazou@adacore.com>
	* tree.c (build_qualified_type): Chain the new type to the original
	type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
	a POINTER_TYPE or a REFERENCE_TYPE respectively.
	(build_pointer_type_for_mode): Only return unqualified types.
	(build_reference_type_for_mode): Likewise.

2006-01-29  Gabriel Dos Reis  <gdr@integgrable-solutions.net>

	* configure.ac (cxx_compat_warn): Set if -Wc++-compat is supported.
	* Makefile.in (CXX_COMPAT_WARN): Define.
	* configure: Regenerate.

2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-opt/25911
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
	to an if check.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* toplev.c: Fix thinko.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
	    Marcin Dalecki  <martin@dalecki.de>

	* toplev.c (floor_log2, exact_log2): Don't define if __cplusplus.
	(push_srcloc): Use XNEW.
	(init_asm_output, default_get_pch_validity): Use XNEWVEC.

2006-01-29  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-core.c (df_set_blocks): Deleted all variable.

2006-01-28  Ian Lance Taylor  <ian@airs.com>

	* cgraphunit.c (cgraph_assemble_pending_functions): Call
	cgraph_output_pending_asms.

2006-01-28  Zack Weinberg  <zackw@panix.com>

	* c.opt: Add -W(no-)overlength-strings.
	* doc/invoke.texi: Document it.
	* c-opts.c (c_common_handle_option): -pedantic implies
	-Woverlength-strings, if not explicitly disabled already.
	(c_common_post_options): -Woverlength-strings defaults to off, and
	is always off for C++.
	* c-common.c (fix_string_type): Issue warning about strings longer
	than is portable only if warn_overlength_strings.  Rearrange code
	a little for clarity.
	* configure.in: Check for -Wno-overlength-strings as well before
	enabling -pedantic in stage 1.
	* Makefile.in (STRICT2_WARN): Add -Wno-overlength-strings.
	(gcc.o-warn, insn-automata.o-warn, build/gencondmd.o-warn): Delete.

	* genconditions.c (write_header, write_one_condition)
	(write_conditions, write_writer): Consolidate very long strings
	that were broken up to fit in C89 portable limit.  Don't use
	printf when fputs will do.

2006-01-28  Adam Nemet  <anemet@caviumnetworks.com>

	* combine.c (simplify_comparison <AND>): Check
	TRULY_NOOP_TRUNCATION before start using a subreg.

	* config/mips/mips.md (*branch_zero<mode>,
	*branch_zero<mode>_inverted, *branch_equality<mode>,
	*branch_equality<mode>_inverted, *branch_equality<mode>_mips16):
	Remove mode check from comparisons.

2006-01-28  Kenneth Zadeck <zadeck@naturalbridge.com>

	* config/mips/mips-protos.h (mips_set_live_on_entry): Deleted.

2006-01-28  Kazu Hirata  <kazu@codesourcery.com>

	* expmed.c (const_mult_add_overflow_p): Remove.
	* expr.h: Remove the prototype for const_mult_add_overflow_p.

	* recog.c (validate_replace_rtx_subexp): Remove.
	* recog.h: Remove the prototype for
	validate_replace_rtx_subexp.

	* integrate.h: Remove the prototype for
	copy_decl_for_inlining.
	* rtl.h: Remove the prototype for mark_constant_function.
	* tree-vectorizer.h: Remove the prototype for
	vect_strip_conversion.

	* modulo-sched.c (create_partial_schedule,
	free_partial_schedule, reset_partial_schedule): Make them
	static.

	* hooks.c (hook_bool_rtx_int_false): Remove.
	* hooks.h: Remove the prototype for hook_bool_rtx_int_false.

2006-01-28  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
	and -mlong-double-128 are incompatible.
	* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.
	(TARGET_LIBGCC2_CFLAGS): Define.
	* config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same.
	(TARGET_LIBGCC2_CFLAGS): Same.
	* config/rs6000/ppc64-fp.c: Compile for 64-bit AIX.

2006-01-28  Kazu Hirata  <kazu@codesourcery.com>

	PR c/19606.
	* c-typeck.c (build_binary_op): Perform implicit casts of
	operands before shortening them.

	* cfgloopmanip.c (split_loop_bb): Remove.
	* cfgloop.h: Remove the prototype for split_loop_bb.

	* cfgloop.c (flow_loop_outside_edge_p): Remove.
	* cfgloop.h: Remove the prototype for
	flow_loop_outside_edge_p.

	* emit-rtl.c (init_virtual_regs): Make it static.
	* function.h: Remove the prototype for init_virtual_regs.

	* recog.c (peephole2_optimize): Make it static.
	* recog.h: Remove the prototype for peephole2_optimize.

2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>

	* df-scan.c (df_record_entry_block_defs): Check if
	INCOMING_RETURN_ADDR_RTX is defined.

2006-01-27  Daniel Berlin  <dberlin@dberlin.org>
	    Kenneth Zadeck <zadeck@naturalbridge.com>

	PR rtl-optimization/24762
	* doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
	* targhooks.c (hook_void_bitmap): New hook prototype.
	* targhoohs.h (hook_void_bitmap): Ditto.
	* bitmap.h (bitmap_head_def): Moved to coretypes.h.
	* coretypes.h (bitmap_head_def): Moved from bitmap.h.
	* target.h (live_on_entry): New function pointer.
	* df-scan.c (df_all_hard_regs): Removed.
	(df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
	(df_scan_free_internal): Added df->entry_block_defs.
	(df_scan_alloc): Ditto.
	(df_scan_dump): Ditto.
	(df_uses_record): Plumbed flag field properly thru calls.
	Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
	This part fixes PR24762.
	(df_bb_refs_record): Added code to make the frame and arg
	pointers live in EH blocks.
	(df_refs_record): Added call to df_record_entry_block_defs.
	(df_record_entry_block_defs): New function.
	* df-core.c: Added comments to describe new artifical defs.
	* df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
	(entry_block_defs): New field in struct df.
	(df_all_hard_regs): Deleted.
	* target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
	* df-problems.c (df_ru_bb_local_compute_process_def):
	Added code to handle artifical defs in the entry to a function.
	(df_ru_bb_local_compute): Ditto.
	(df_rd_bb_local_compute_process_def): Ditto.
	(df_rd_bb_local_compute): Ditto.
	(df_lr_bb_local_compute): Ditto.
	(df_ur_bb_local_compute): Ditto.
	(df_urec_bb_local_compute): Ditto.
	(df_chain_create_bb): Ditto.
	(df_ur_local_finalize):	Removed entry.
	(df_urec_init): Ditto.
	(df_urec_local_finalize): Ditto.
	(df_ri_bb_compute): Added detection of last use of pseudos.
	* Makefile.in (df-scan.o): Updated dependencies.
	* config/mips/mips-protos.h (mips_set_live_on_entry): Added.
	* config/mips/mips.c (mips_set_live_on_entry): Added.
	* config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
	for target hook.
	* dce.c (marked_insn_p): Added code to handle artifical defs.

2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
	intrinsic.
	(_mm_cvtsi128_si64): Likewise.
	(_mm_cvtsd_si64): Likewise.
	(_mm_cvttsd_si64): Likewise.
	(_mm_cvtsi64_sd): Likewise.
	(_mm_cvtsi64_si128): Likewise.
	* config/i386/mmintrin.h (_m_from_int64): Likewise.
	(_mm_cvtsi64_m64): Likewise.
	(_m_to_int64): Likewise.
	(_mm_cvtm64_si64): Likewise.
	* config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
	(_mm_cvttss_si64): Likewise.
	(_mm_cvtsi64_ss): Likewise.
	(_mm_cvtss_f32): Likewise.

2006-01-27  Carlos O'Donell  <carlos@codesourcery.com>

	* c-pragma.c (init_pragma) : Call c_register_pragma_with_expansion
	for pragma redefine_extname.

2006-01-27  Jakub Jelinek  <jakub@redhat.com>

	PR target/25864
	* libgcc-std.ver: Add GCC_4.1.0 symbol version.
	* config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
	-mno-minimal-toc to previous content.
	(bispecs): Remove goal.
	* config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
	* config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
	compatibility aliases on powerpc-*-*gnu*.
	* config/rs6000/libgcc-ppc-glibc.ver: New file.
	* config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
	libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
	(TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
	(ldblspecs): New goal.
	* config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
	* mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
	_df_to_tf.
	* config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
	L_sf_to_tf or L_df_to_tf is defined.

2006-01-27  David Edelsohn  <edelsohn@gnu.org>
	    Alan Modra  <amodra@bigpond.net.au>

	PR target/25864
	* config/rs6000/linux.h (POWERPC_LINUX): Define.
	* config/rs6000/linux64.h (POWERPC_LINUX): Define.
	* config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
	* config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
	* config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
	* config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
	(rs6000_override_options): Initialize rs6000_ieeequad.
	Initialize TFmode format to ibm_extended_format if not
	TARGET_IEEEQUAD.
	(rs6000_handle_option): Accept -mabi= ibmlongdouble and
	ieeelongdouble.
	(rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
	(rs6000_return_in_memory): Only return IEEEQUAD in memory.
	(function_arg_advance): IBM long double passed in two FPRs, not
	split.
	(function_arg): IBM long double passed in FPRs.
	(rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
	(rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
	Only multireg GPR aligned.
	(rs6000_init_libfuncs): Enable IBM long double functions if not
	IEEEQUAD.
	(rs6000_generate_compare): Use IBM long double compare if not
	TARGET_IEEEQUAD.
	* config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
	(TARGET_IEEEQUAD): Define.
	(CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
	not TARGET_IEEEQUAD.
	* config/rs6000/rs6000.md: Enable TFmode patterns if
	!TARGET_IEEEQUAD.
	* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
	* config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
	and -mlong-double-128 are incompatible.
	* doc/invoke.texi (-mabi): Collect options together.  Add
	ibmlongdouble and ieeelongdouble.

2006-01-27  Richard Sandiford  <richard@codesourcery.com>

	* doc/rtl.texi (SYMBOL_REF_DATA): Adjust documentation for new
	opaque type.
	* optabs.c (init_one_libfunc): Use SET_SYMBOL_REF_DECL.
	* varasm.c (make_decl_rtl, build_constant_desc): Likewise.
	(force_const_mem): Use SET_SYMBOL_REF_CONSTANT.
	* rtl.h (rtunion_def): Remove rt_ptr.
	(X0PTR): Delete.
	(SYMBOL_REF_DATA): Use X0ANY instead of X0PTR.
	(SET_SYMBOL_REF_DECL, SET_SYMBOL_REF_CONSTANT): New macros.
	* config/i386/winnt.c (i386_pe_mark_dllexport)
	(i386_pe_mark_dllimport): Use SET_SYMBOL_REF_DECL.

2006-01-27 Gabor Loki <loki@gcc.gnu.org>

	* cfgcleanup.c (try_crossjump_to_edge): Fix comment typo.

2006-01-26 Alexandre Oliva  <aoliva@redhat.com>

	PR other/24829
	PR target/24831
	* gthr-dce.h: Do not gthrw-ify pthread_once_init,
	pthread_key_delete.  From John David Anglin.  gthrw-ify
	pthread_getunique_np only if it it's not a macro.  Delete
	UNUSED macro.
	(__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
	__gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
	__gthread_objc_condition_signal, __gthread_key_delete): Add
	"__attribute__ ((__unused__))" to unused arguments.
	(__gthread_recursive_mutex_init_function): Add missing return.
	* gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
	gthr-posix95.h: Use macro-based approach for name redirection
	on targets missing weakref.

2006-01-26  Zack Weinberg  <zackw@panix.com>

	* genconditions.c (write_header): In generated code, #ifdef out
	all includes and fake declarations, except includes of bconfig.h
	and system.h, unless GCC_VERSION >= 3001.  Do not include
	gensupport.h in any case.
	(write_conditions): Generate a definition of struct c_test.  Add
	a comment to the generated #endif.
	(write_one_condition): Escape backslashes in string too.
	(write_writer): Generated code must escape backslashes and quote
	marks (but not newlines) in the strings it writes.
	* Makefile.in (build/gencondmd.o): Update dependencies.

2006-01-26  Steve Ellcey  <sje@cup.hp.com>

	PR target/25961
	* Makefile.in (insn-automata.o): Add header file dependencies.
	* genautomata.c: Add includes.

2006-01-26  Steve Ellcey  <sje@cup.hp.com>

	PR target/25961
	* Makefile.in (insn-automata.o): Add -Wno-error flag.

2006-01-26  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Expect target tools paths to be passed from the toplevel
	and wrap the detection into AS_SET_VAR_IF.  Extract side-effects out of
	AS_SET_VAR_IF.
	* acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.

2006-01-26  Alexandre Oliva  <aoliva@redhat.com>

	PR c/25892
	* c.opt (Wpointer-sign): Init to -1.
	* c-opts.c (c_common_handle_option): Set to 1 on OPT_Wall and
	OPT_pedantic, to 0 otherwise.
	* doc/invoke.texi: Update.

2006-01-26  Paolo Bonzini  <bonzini@gnu.org>

	* config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Emit
	constants provided by 80387 instructions in the destination mode.

2006-01-26  Richard Guenther  <rguenther@suse.de>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/21470
	partial PR tree-opt/17064
	* tree-ssa-structalias.c (intra_create_variable_infos):
	Create heap variables for incoming parameters if
	flag_argument_noalias > 1.
	(find_what_p_points_to): Look through default defs of
	parameter decls.

2006-01-26  Jeff Law  <law@redhat.com>

	PR ada/25900
	* tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
	with a VR_ANTI_RANGE and the VR_ANTI_RANGE is completely contained
	within the VR_RANGE, use the VR_RANGE as the result, not the
	VR_ANTI_RANGE.
	(adjust_range_with_scev): Reject ranges from SCEV which are out of
	bounds for the type.

2006-01-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (maybe_create_global_var): Change
	subvar walking to an assertion that we don't have subvar'd variables.

2006-01-26  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C/25861
	* c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
	Use a new variable, inner.  PARM_DECLs are always non-weak.

2006-01-26  Shantonu Sen  <ssen@opendarwin.org>

	* tree.h (OMP_CLAUSE_SUBCODE_CHECK): Add definition for
	--disable-checking.

2006-01-26  Adam Nemet  <anemet@caviumnetworks.com>

	* config/mips/mips.md (*clear_upper32): New combiner pattern.

2006-01-26  Richard Earnshaw  <richard.earnshaw@arm.com>

	* arm.md (smaxsi3, sminsi3): Convert to define_expand.
	(smax_insn, smin_insn, smax_0, smin_0): New.

2006-01-26  Hans-Peter Nilsson  <hp@axis.com>

	PR target/25947
	* config/cris/cris.c (cris_order_for_addsi3): New function.
	* config/cris/cris-protos.h: Prototype it.
	* config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
	(split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
	(split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
	(split for "op.S1 [rx=rx+i],ry (swapped)")
	(split for "op(s|u).S1 [rx=rx+i],ry")
	(split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
	Apply cris_order_for_addsi3 when generating addsi3 insns.

2006-01-25  Diego Novillo  <dnovillo@redhat.com>

	* tree.h (TREE_RANGE_CHECK): Fix range predicate.
	(TREE_BLOCK): Add call to EXPR_CHECK.

2006-01-25  Diego Novillo  <dnovillo@redhat.com>

	PR 25886
	* tree-dump.c (dequeue_and_dump): Handle OMP_CLAUSE.
	* tree-pretty-print.c (dump_omp_clause): Extract from ...
	(dump_omp_clauses): ... here.
	(dump_generic_node): Handle OMP_CLAUSE.
	* tree.c (omp_clause_num_ops): New.
	(omp_clause_code_name): New.
	(tree_code_size): Handle OMP_CLAUSE.
	(tree_size): Likewise.
	(make_node): Document handling of OMP_CLAUSE.
	(tree_node_structure): Handle OMP_CLAUSE.
	(omp_clause_check_failed): New.
	(omp_clause_range_check_failed): New.
	(omp_clause_operand_check_failed): New.
	(build_omp_clause): New.
	(walk_tree): Adjust handling of OMP_CLAUSE_* nodes.
	* tree.h (enum omp_clause_code): Declare.
	(OMP_CLAUSE_SUBCODE_CHECK): Define.
	(OMP_CLAUSE_RANGE_CHECK): Define.
	(OMP_CLAUSE_ELT_CHECK): Define.
	(omp_clause_check_failed): Declare.
	(omp_clause_operand_check_failed): Declare.
	(omp_clause_range_check_failed): Declare.
	(OMP_CLAUSE_CHAIN): Do not use TREE_RANGE_CHECK.
	(OMP_CLAUSE_OPERAND): Use OMP_CLAUSE_RANGE_CHECK.
	(OMP_CLAUSE_PRIVATE_DEBUG): Use OMP_CLAUSE_SUBCODE_CHECK.
	(OMP_CLAUSE_LASTPRIVATE): Likewise.
	(OMP_CLAUSE_IF_EXPR): Likewise.
	(OMP_CLAUSE_NUM_THREADS_EXPR): Likewise.
	(OMP_CLAUSE_SCHEDULE_CHUNK_EXPR): Likewise.
	(OMP_CLAUSE_REDUCTION_CODE): Likewise.
	(OMP_CLAUSE_REDUCTION_INIT): Likewise.
	(OMP_CLAUSE_REDUCTION_MERGE): Likewise.
	(OMP_CLAUSE_REDUCTION_PLACEHOLDER): Likewise.
	Use tree_node.omp_clause.subcode instead of TREE_COMPLEXITY.
	(OMP_CLAUSE_SCHEDULE_KIND): Likewise.
	(OMP_CLAUSE_DEFAULT_KIND): Likewise.
	(OMP_CLAUSE_CODE): Define.
	(OMP_CLAUSE_SET_CODE): Define.
	(OMP_CLAUSE_CODE): Define.
	(OMP_CLAUSE_OPERAND): Define.
	(struct tree_omp_clause): Declare.
	(union tree_node): Add field 'omp_clause'.
	* treestruct.def (TS_OMP_CLAUSE): Define.
	* tree.def (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED
	OMP_CLAUSE_FIRSTPRIVATE, OMP_CLAUSE_LASTPRIVATE,
	OMP_CLAUSE_REDUCTION, OMP_CLAUSE_COPYIN,
	OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF,
	OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE,
	OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Remove.
	(OMP_CLAUSE): Define.
	* print-tree.c (print_node): Handle OMP_CLAUSE.
	* omp-low.c: Adapt all uses of OMP_CLAUSE_* nodes.
	* c-typeck.c: Likewise.
	* gimplify.c: Likewise.
	* c-omp.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-inline.c: Likewise.
	* c-parser.c: Likewise.
	* gimple-low.c (lower_omp_directive): Do not set TREE_BLOCK on
	clauses.

2006-01-25  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/25703
	* combine.c (try_combine): Handle zero_extract and strict_low_part
	of non-lowpart SUBREGs for constant reg_subword_p set optimization.

2006-01-25  Peter Bergner  <bergner@vnet.ibm.com>

	* global.c: Fix comment typos.

2006-01-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/25758
	* config/i386/i386.c (output_pic_addr_const) <case SYMBOL_REF>:
	Use output_addr_const instead of assemble_name.

2006-01-25  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (sched-vis.o): Update dependencies.
	* haifa-sched.c (sched_finish): Clear current_sched_info.
	* cfg.c (dump_bb_info): New, split from dump_flow_info.
	(dump_flow_info): Call it.
	* passes.c (execute_todo): Call print_rtl_slim_with_bb to make
	a slim RTL dump.
	* basic-block.h (dump_bb_info): Declare.
	* tree-dump.c (dump_enable_all): OR the flags of a -fdump-tree-all
	option, and apply options only for dump files whose TDF_RTL,
	TDF_TREE, or TDF_IPA bits match.
	* rtl.h: Declare new functions exported from sched-vis.c.
	* sched-vis.c: Enable also if scheduling is not used.
	(print_value): Print the mode of registers if not inside scheduling.
	(print_insn): Make it work outside the scheduler.  Beautify the output
	a bit.
	(dump_insn_slim, debug_insn_slim, print_rtl_slim_with_bb): New.

2006-01-25  Richard Sandiford  <richard@codesourcery.com>

	* doc/rtl.texi (SYMBOL_REF_CONSTANT, SYMBOL_REF_DATA): Document.
	* gengtype.c (adjust_field_rtx_def): Garbage-collect field 2 of
	a SYMBOL_REF as either a tree or a constant_descriptor_rtx,
	depending on the value of CONSTANT_POOL_ADDRESS_P.
	* optabs.c (init_one_libfunc): Nullify SYMBOL_REF_DATA rather than
	SYMBOL_REF_DECL.
	* varasm.c (make_decl_rtl, build_constant_desc): Set SYMBOL_REF_DATA
	rather than SYMBOL_REF_DECL.
	(rtx_constant_pool): Remove const_rtx_sym_htab.
	(const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): Delete.
	(init_varasm_status): Don't initialize const_rtx_sym_htab.
	(force_const_mem): Point SYMBOL_REF_DATA to the constant pool entry.
	Remove handling of const_rtx_sym_htab.
	(find_pool_constant): Delete.
	(get_pool_constant, get_pool_constant_mark): Use SYMBOL_REF_CONSTANT
	rather than find_pool_constant.
	(get_pool_constant_for_function): Delete.
	(get_pool_mode, mark_constant): Use SYMBOL_REF_CONSTANT rather than
	find_pool_constant.
	* rtl.h (rtunion_def): Add rt_constant and rt_ptr fields.
	(X0CONSTANT, X0PTR, SYMBOL_REF_DATA): New macros.
	(SYMBOL_REF_DECL): Return NULL if CONSTANT_POOL_ADDRESS_P.
	(SYMBOL_REF_CONSTANT): New macro.
	(get_pool_constant_for_function): Delete.
	* config/i386/winnt.c (i386_pe_mark_dllexport): Set SYMBOL_REF_DATA
	rather than SYMBOL_REF_DECL.
	(i386_pe_mark_dllimport): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_move): Copy SYMBOL_REF_DATA
	rather than SYMBOL_REF_DECL.
	* config/darwin.c (machopic_indirect_data_reference): Likewise.
	(machopic_indirect_call_target): Likewise.

2006-01-25  Eric Botcazou  <ebotcazou@adacore.com>

	* flow.c (delete_noop_moves): Add missing EOL to dump message.

2006-01-25  Richard Sandiford  <richard@codesourcery.com>

	* genattrtab.c (gen_bypass): Allow bypasses to contain whitespace.

2006-01-25  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/predicates.md (sh_register_operand): Accept CONST_DOUBLE.

2006-01-24  David Daney  <ddaney@avtrex.com>

	PR java/25816
	* configure.ac (enable_tls): New enable option.
	(HAVE_AS_TLS): Don't do assembler check if enable_tls set.
	* configure: Regenerate.
	* doc/install.texi (--enable-tls): Document new option.
	(--disable-tls): Ditto.

2006-01-24  Richard Henderson  <rth@redehat.com>

	* alias.h (ALIAS_SET_MEMORY_BARRIER): New.
	* alias.c (true_dependence): Respect it.
	(canon_true_dependence, write_dependence_p): Likewise.
	* builtins.c (get_builtin_sync_mem): Set it.

2006-01-25  Zdenek Dvorak <dvorakz@suse.cz>

	* loop-iv.c (iv_analysis_loop_init): Use df analysis in a more
	efficient way.

2006-01-24  DJ Delorie  <dj@redhat.com>

	* expmed.c (store_bit_field): Don't arbitrarily deny using insv
	for storing constants in single-bit bitfields.

2006-01-25  Ben Elliston  <bje@au.ibm.com>

	* dfp.c (dfp_byte_swap): Use uint32_t and not unsigned long.

2006-01-24  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/25860
	* tree-ssa-pre.c (phi_translate): Return NULL
	for AGGREGATE_TYPE's.

2006-01-24  Zack Weinberg  <zackw@panix.com>

	* genautomata.c (process_state_for_insn_equiv_partition):
	Use xcalloc for insn_arcs_array.
	* vec.h (DEF_VEC_ALLOC_FUNC_I): New set of templates.
	(DEF_VEC_ALLOC_I): Use it, not DEF_VEC_ALLOC_FUNC_P.

2006-01-24  Richard Henderson  <rth@redhat.com>

	* genextract.c (VEC_safe_set_locstr): Take VEC by reference;
	update all callers.

2006-01-23  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/25890
	PR rtl-optimization/25905
	* combine.c (expand_compound_operation, expand_field_assignment):
	Fail if the bitfield's final position is out of bounds.

2006-01-24  Ian Lance Taylor  <ian@airs.com>

	PR middle-end/25930
	* cgraphunit.c (cgraph_output_in_order): Don't clear
	cgraph_asm_nodes until after asm strings have been output.

2006-01-23  Adam Nemet  <anemet@caviumnetworks.com>

	* fix-header.c (read_scan_file): Add new parameter imultilib when
	calling register_include_chains.

2006-01-23  Diego Novillo  <dnovillo@redhat.com>

	* omp-low.c: Update documentation.

2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
	    Daniel Berlin  <dberlin@dberlin.org>

	PR tree-opt/25315
	PR tree-opt/25857
	* tree-ssa-pre.c (insert_extra_phis): If an incoming edge is abnormal
	return from the function.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* rtl.def (match_code): Add second argument.
	* genpreds.c (write_extract_subexp): New function.
	(write_match_code): Add path argument.  Use write_extract_subexp.
	(write_predicate_expr): Pass path to write_match_code.
	(mark_mode_tests): MATCH_CODE applied to a subexpression does
	not perform a mode test.
	* genrecog.c (compute_predicate_codes): MATCH_CODE applied to
	a subexpression does not constrain the top-level code set.
	* read-rtl.c (read_rtx_variadic): New function.
	(read_rtx_1): Use it; allow AND and IOR to be variadic.
	* doc/md.texi: Document new notation.
	* config/i386/predicates.md (cmpsi_operand_1): Fold into ...
	(cmpsi_operand): ... here, using new notation.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* varray.c: Remove GENERATOR_FILE #ifdefs.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genautomata.c (output_reserved_units_table): Emit nothing if
	description->query_units_num is zero.  Remove extra blank line.
	(output_cpu_unit_reservation_p): Short circuit
	if description->query_units_num is zero.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genattrtab.c: Don't include genattrtab.h.  Define ATTR_NONE
	and ATTR_SPECIAL (from genattrtab.h).  Don't define num_dfa_decls
	nor any of the random handful of variables that used to be necessary
	when this program was linked with rtlanal.o.  Prune set of forward
	function declarations.
	(struct attr_desc): Remove static_p field.
	(hash_obstack, temp_obstack, attr_hash_table, attr_printf)
	(check_attr_test, make_internal_attr, make_numeric_value): Make static.
	(attr_string): Do not read the character one past the length of
	the string.
	(write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
	(struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
	(n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
	(n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
	(make_automaton_attrs): New.
	(main): Do not call into genautomata.  Call local gen_bypass
	and gen_insn_reserv as appropriate.  Call make_automaton_attrs.
	Remove special case for insn_alts.
	* genautomata.c: Include gensupport.h; not genattrtab.h nor
	varray.h (leftover from previous change).  Prune set of forward
	function declarations.  Remove state_alts fields from all
	structures.  Remove state_alts_table from struct automaton.
	Make everything except main static.  Do not maintain num_dfa_decls.
	Do not maintain state_alts fields of various structures.
	(process_decls): Don't validate condexp for dm_insn_reserv decls.
	(add_arc): Remove state_alts argument.  All callers updated.
	(output_reserved_units_table): Emit #ifdef here...
	(output_tables): ...not here.  Don't generate state_alts tables.
	(expand_automata): Don't generate attributes.
	(write_automata): Don't generate state_alts functions.
	(main): New function.
	(it_is_empty_reserv_sets, output_state_alts_full_vect_name)
	(output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
	(AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
	(STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
	(BYPASS_P_FUNC_NAME, output_state_alts_table)
	(output_automata_list_state_alts_code, output_internal_state_alts_func)
	(output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
	(make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
	Delete.
	* genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
	* genattrtab.h: Delete file.
	* Makefile.in (OBJS-common): Add insn-automata.o.
	(insn-automata.o): New rule.
	(simple_generated_c): Add insn-automata.c.
	(build/genattrtab.o, build/genautomata.o): Update dependencies.
	(genprogmd): Add automata.
	(build/genattrtab): Needs no extra objects nor libraries.
	(build/genautomata): Needs build/vec.o and -lm.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genautomata.c (process_state_longest_path, max_dfa_issue_rate)
	(output_dfa_max_issue_rate, locked_states_num): Delete.
	(struct automaton): Add locked_states field.
	(output_dead_lock_vect): Save number of locked states in
	automaton->locked_states.  If it is zero, don't print anything.
	(output_max_insn_queue_index_def): Define max_insn_queue_index const.
	(output_internal_dead_lock_func): Only test the dead_lock_vect
	for automata that have locked states.
	(output_statistics): Always print the number of locked states for
	each automaton.  Calculate total number of locked states here.
	(write_automata): Don't call output_dfa_max_issue_rate.
	* genattrtab.c: Define length_unit_log as a const variable.
	* genattr.c: Don't emit MAX_DFA_ISSUE_RATE.  Declare
	max_insn_queue_index const.
	* final.c (length_unit_log): Declare const.
	* doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genautomata.c: Include vec.h, not varray.h.
	Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
	VLA_HWINT_ macros.  Change vla_hwint_t to a typedef for
	VEC(vect_el_t,heap) *.  Convert all uses of VLA_* macros to
	VEC_* macros operating on appropriately typed vectors, or to
	malloced arrays when the size is known in advance.  Const-ify
	many char* variables and function arguments.  No functional changes.
	* Makefile.in (build/varray.o): Delete rule.
	(build/genattrtab): Depend on build/vec.o instead of build/varray.o.
	(build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* gensupport.c: Define get_insn_name and record_insn_name here.
	(read_md_rtx): Call record_insn_name as appropriate.
	* genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
	* genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
	* genpreds.c, genrecog.c: Don't define get_insn_name nor
	record_insn_name.
	* Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
	(BUILD_VARRAY): Delete.
	(genprognormal): Rename genprogmd.  Fold in all programs from
	genprognoprint; also attrtab.
	(build/genattrtab): Just mention genautomata.o and varray.o.
	Reorganize a bit, add comments to make the categories clearer.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genconditions.c (condition_table, add_condition): Delete.
	(write_conditions): Don't emit n_insn_conditions nor
	insn_elision_unavailable.  Issue the gcc version #ifdef here,
	inside the table, with no #else clause ...
	(write_header): ...not here.
	(write_writer): New function.
	(main): Don't initialize condition_table.  Use add_c_test.
	Call write_writer.
	* gensupport.c (init_md_reader_args_cb): Handle multiple input
	files on the command line.
	(maybe_eval_c_test): Don't check insn_elision_unavailable.
	Return -1 if there is no entry in the table, don't abort.
	(add_c_test, traverse_c_tests): New functions.
	* gensupport.h (insn_elision_unavailable, insn_conditions)
	(n_insn_conditions): Delete declarations.
	(add_c_test, traverse_c_tests): Declare.
	* read-rtl.c: Include gensupport.h.
	(read_conditions): New function.
	(read_rtx): If read_rtx_1 returns 0, treat as EOF.
	(read_rtx_1): If we get EOF when we were looking for an initial
	open paren, return 0.  Call read_conditions when appropriate.
	* Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
	dummy-conditions.o.  Eliminate references to insn-conditions.o,
	or change them to build/gencondmd.o, as appropriate.  Remove
	insn-constants.h from $(simple_generated_h) and insn-conditions.c
	from $(simple_generated_c).  For all files remaining in those
	two lists, add insn-conditions.md to the generator command line.
	Give insn-constants.h/s-constants their own rules.  Add rules
	for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
	(build/read-rtl.o): Depend on gensupport.h.
	(genprognormal): Include preds.
	(genprogearly): Rename genprognoprint; only difference is now that
	they don't link with $(BUILD_PRINT).
	* dummy-conditions.c: Delete.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* genextract.c: Don't include insn-config.h.  Do include vec.h.
	Declare vectors of int, char, and locstr.
	(locstr): New typedef.
	(struct extraction): Make all array fields into bare pointers.
	(insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
	(insn_code_number): Delete.
	(accum_extract): New struct.
	(VEC_safe_set_locstr, VEC_char_to_string): New functions.
	(gen_insn): Take insn_code_number as an argument.  Use an
	accum_extract structure instead of loading data directly into
	a struct extraction, and having to know how big it might get.
	(walk_rtx): Operate entirely on an accum_extract structure.
	(print_path): Avoid unnecessary use of printf.
	(print_header): New function, split out of main.  Distinguish
	more carefully between an unrecognizable insn and an insn that
	has the code number of a define_expand.
	(main): Pass insn_code_number to gen_insn.  Call print_header
	only after parsing.  Avoid unnecessary use of printf.
	* Makefile.in (build/vec.o): New rule.
	(build/genextract): Depend on build/vec.o.
	(build/genextract.o): Don't depend on insn-config.h.

2006-01-22  Zack Weinberg  <zackw@panix.com>

	* Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
	$(RUN_GEN).  Use pattern rules to factor out as much boilerplate as
	practical.  Eliminate per-generator-program link rules.

2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/24437
	* tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
	with a call expr to ...
	* fold-const.c (fold_ternary) <case CALL_EXPR>: Here.

2006-01-23  Richard Guenther  <rguenther@suse.de>

	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
	before make_edge with conditional EDGE_TRUE_VALUE.

2006-01-23  Steven Bosscher  <stevenb.gcc@gmail.com>
	Jan Hubicka  <jh@suse.cz>
	Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/25654
	* cfgexpand.c (aggregate_contains_union_type): New function.
	(add_alias_set_conflicts): Call it.  Make sure to add conflicts
	for structure variables that contain a union type.

2006-01-23  Richard Sandiford  <richard@codesourcery.com>

	* gengtype.c (new_structure): Return the structure.
	(create_option): Add an extra "next" argument.
	(create_field): New function.
	(adjust_field_rtx_def): Use create_option and create_field.
	Remove a now-unnecessary call to find_structure.
	(adjust_field_tree_def): Likewise.
	(note_yacc_type): Remove an unnecessary call to find_structure.
	* gengtype.h (new_structure): Return the structure.
	(create_option): Add an extra argument.
	* gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
	(option): Adjust calls to create_option.

2006-01-22  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix.h (STACK_BOUNDARY): Define.

2006-01-22  Paul Brook  <paul@codesourcery.com>
	Peter Barada  <peter@the-baradas.com>

	* config/m68k/m68k.md: Add Coldfire FPU support.
	Define FP mode macro and associated attributes.
	Use it for float mode patterns.
	* config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
	(LIBCALL_VALUE): Use m68k_libcall_value.
	* config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
	(m68k_function_value): Ditto.
	(emit_move_sequence): Ditto.
	* config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
	* config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
	* config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
	(MULTILIB_EXCEPTIONS): Ditto.
	* config/m68k/m68k.opt: Add mcfv4e.
	* config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
	(m68k_compute_frame_layout): Include space for ColdFire FPU regs.
	(m68k_output_function_prologue): Save ColdFire FPU registers.
	(m68k_output_function_epilogue): Restore ColdFire FPU registers.
	(force_mode, fp_reg_operand, emit_move_sequence): New functions.
	(m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
	ColdFire FPU registers.
	(m68k_libcall_value, m68k_function_value): New functions.
	* config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
	(LIBCALL_VALUE): Use m68k_libcall_value.
	* config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
	(MASK_COLDFIRE): Add MASK_CFV4E.
	(TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
	(MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
	(REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
	(GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
	(GO_IF_LEGITIMATE_ADDRESS): Use it.
	(LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
	* doc/invoke.tex: Document -mcfv4e on m68k.

2006-01-22  Ranjit Mathew  <rmathew@gcc.gnu.org>

	* doc/contribute.texi: Change CVS to SVN and update the corresponding
	URL.

2006-01-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/16190
	* c-opts.c (c_common_handle_option): Don't include
	-Wnon-virtual-dtor in -Wall; enable if -Weffc++.
	* doc/invoke.texi (C++ Dialect Options): Document that
	-Wnon-virtual-dtor is no longer included in -Wall.

2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>

	* gcov.c (print_version), gcov-dump.c (print_version),
	mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
	dates.

2006-01-21  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-scan.c (problem_SCAN): Added NULL reset function.
	(df_scan_reset_blocks): Added code to call reset block function
	(df_bb_refs_delete) Fixed comment.
	(df_insn_refs_delete): Made tolerant of deleting non existent info
	for dataflow problems that need to be reset.
	* df-core.c (df_set_blocks): Ditto.
	* df.h (struct df_problem): Added reset_fun.
	* df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
	problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
	(df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
	functions to clear out all references to def-use or use-def chains.

2006-01-21  Ben Elliston  <bje@au.ibm.com>

	* varasm.c (assemble_real): Initialise data array.

2006-01-20  Paul Brook  <paul@codesourcery.com>

	Merge from csl-arm-branch.
	2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
	* config/arm/arm.md (movdi): Force operands[1] to a register
	if we have a non-register source.
	(*arm_movdi, *movdf_soft_insn): Require that one of the
	operands be a register.
	* config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
	* config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.

2006-01-20  DJ Delorie  <dj@redhat.com>

	* varasm.c (initializer_constant_valid_p): Allow pointers
	initialized from integer constants of lesser precision.
	(output_constant): Allow non-int-sized pointer modes to be
	initialized from integer constants.

2006-01-20  Joseph S. Myers  <joseph@codesourcery.com>

	PR libstdc++/25524
	* cppdefault.h (struct default_include): Add multilib flag.
	* cppdefault.c (cpp_include_defaults): Set it.
	* c.opt (-imultilib): New option.
	* c-opts.c (imultilib): New.
	(c_common_handle_option): Handle -imultilib.
	(c_common_post_options): Likewise.
	* c-incpath.c (add_standard_paths, register_include_chains):
	Likewise.
	* c-incpath.h (register_include_chains): Add extra parameter.
	* gcc.c (do_spec_1): Generate -imultilib option.
	(The Specs Language): Update %I description.
	(process_command): Update copyright notice.
	* doc/cppopts.texi (-imultilib): Document.
	* doc/invoke.texi (-imultilib): Include in option summary.
	(%I): Update specs documentation.

2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>

	* loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.

2006-01-20  Richard Sandiford  <richard@codesourcery.com>

	* stmt.c (case_bit_test_cmp): Stabilize the sort using code
	label numbers.

2006-01-20  Richard Guenther  <rguenther@suse.de>
	Steven Bosscher <stevenb.gcc@gmail.com>

	PR rtl-optimization/24626
	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
	EDGE_TRUE_VALUE if in RTL mode.

	Revert
	2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
	* cfgrtl.c (rtl_verify_flow_info_1): Fix.

2006-01-20  Dirk Mueller  <dmueller@suse.com>

	PR c++/5520
	* c-parser.c (c_parser_if_body): Use build_empty_stmt()
	instead of a special NOP marker.
	* c-typeck.c (c_finish_if_stmt): Remove obsoleted special
	NOP marker handling.
	* c-common.h (empty_body_warning): Add forward declaration.
	* c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
	Now uses IS_EMPTY_STMT() instead of special NOP markers.

2006-01-20  Paul Brook  <paul@codesourcery.com>

	* Makefile.in (lang_checks): Keep going if mkdir fails.

2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-scan.c (df_scan_free_bb_info): Added basic block parameter to
	be able to clean out basic block when not necessary.
	(df_scan_free): Fixed to properly delete information if df is
	unused before calling df_finish.
	(df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
	df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
	or comment typos.
	(df_bb_refs_delete): New function.
	(df_refs_delete): Moved per block code to df_bb_refs_delete.
	* df-core.c (df_set_blocks): Added code to properly clean out
	unused blocks if they are not part of the blocks to consider.
	Added additional null check.
	(df_compact_blocks): Added basic block parameter to free_bb_fun to
	be able to clean out basic block when not necessary
	* df.h (df_free_bb_function): Ditto.
	(df_bb_refs_delete): New function.
	* df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
	df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
	basic block parameter to be able to clean out basic block when not
	necessary.
	(df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
	(df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
	Fixed to properly delete information if df is unused before
	calling df_finish.

2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>

	PR rtl-optimization/25799
	* df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
	Corrected confluence operator to remove bits from op2 before oring
	with op1 rather than removing bits from op1.
	(df_ru_transfer_function): Corrected test on wrong bitmap which
	caused infinite loop.  Both of these problems were introduced in
	the dataflow rewrite.

2006-01-19  DJ Delorie  <dj@redhat.com>

	* reload1.c (find_reload_regs): Note the details of reload
	failures in the dump file.
	(spill_failure): Likewise.

2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>

	* loop-iv.c: Include df.h and hashtab.h.
	(enum iv_grd_result): New enum.
	(DF_REF_IV, DF_REF_IV_SET): New macros.
	(struct biv_entry): New.
	(df, bivs): New global variables.
	(struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
	assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
	Removed.
	(clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
	iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
	analyzed_for_bivness_p, record_biv): New functions.
	(iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
	get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
	iv_analyze, biv_p, iv_analysis_done): Work with df representation of
	UD chains.
	(iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
	analysed.
	(iv_number_of_iterations): Use new interface to iv analysis.
	* loop-unroll.c: Do not include varray.h.
	(analyze_iv_to_split_insn): Use new interface to iv
	analysis.
	* loop-unswitch.c (may_unswitch_on): Ditto.
	* df.c (df_bitmaps_free): Only work for bbs for that structures are
	allocated.
	(df_bb_modify): Realloc tables to the new index.
	(df_find_use): New function.
	* df.h (df_find_use): Declare.
	* optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
	outmode.
	* cfgloop.h (struct rtx_iv): Remove analysed field.
	(iv_get_reaching_def): Removed.
	(iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
	* Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
	(loop-iv.o): Add df.h and hashtab.h dependency.
	* df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.

2006-01-20  Alan Modra  <amodra@bigpond.net.au>

	PR target/25668
	* libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
	Double TFmode.
	(__floatundisf, __floatundidf): Likewise.
	* libgcc2.h (IS_IBM_EXTENDED): Define.

2006-01-19  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.h (REG_ALLOC_ORDER): Define.

2006-01-19  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_compute_func_type): Treat all functions
	as nothrow when unwinding tables are disabled.

2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR testsuite/25171
	* c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
	of bit-field" when in system header.

2006-01-19  DJ Delorie  <dj@redhat.com>

	* config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
	the 16 bit shift limit of the m16c.

2006-01-19  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/22099
	* config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
	* config/i386/i386.c (output_set_got): Output the label if we have one
	for the TARGET_DEEP_BRANCH_PREDICTION case.

2006-01-19  Jan Hubicka  <jh@suse.cz>
	    H.J. Lu  <hongjiu.lu@intel.com>
	    Evandro Menezes <evandro.menezes@amd.com>

	* invoke.texi (generic): Document
	(i686) Update.
	* config.gcc: Make x86_64-* and i686-* default to generic tunning.
	* i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
	TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
	(x86_use_incdec, x86_pad_returns): New variables
	(TARGET_CPU_DEFAULT_generic): New constant
	(TARGET_CPU_DEFAULT_NAMES): Add generic.
	(enum processor_type): Add generic32 and generic64.
	* i386.md (cpu attribute): Add generic32/generic64
	(movhi splitter): Behave sanely when both partial_reg_dependency and
	partial_reg_stall are set.
	(K8 splitters): Enable for generic as well.
	* predicates.md (incdec_operand): Use TARGET_INCDEC
	(aligned_operand): Avoid memory mismatch stalls.
	* athlon.md: Enable for generic64, new patterns for 128bit moves.
	* ppro.md: Enable for generic32
	* i386.c (generic64_cost, generic32_cost): New.
	(m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
	(x86_use_leave): Enable for generic64.  (x86_use_sahf,
	x86_ext_80387_constants): Enable for generic32.  (x86_push_memory,
	x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
	x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
	x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
	x86_partial_reg_dependency, x86_memory_mismatch_stall,
	x86_accumulate_outgoing_args, x86_prologue_using_move,
	x86_epilogue_using_move, x86_arch_always_fancy_math_387,
	x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
	Enable for generic.
	(x86_use_incdec, x86_pad_returns): New.
	(override_options): Add generic32 and generic64, translate "generic"
	to generic32/generic64 and "i686" to "generic32", refuse
	"generic32"/"generic64" as arch target.
	(ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
	(ix86_reorg): Honor PAD_RETURNS.

2006-01-19  Diego Novillo  <dnovillo@redhat.com>

	* tree-pretty-print.c (dump_generic_node): Handle
	OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
	* cgraph.c (cgraph_expand_queue): Rename from
	cgraph_analyze_queue.  Update all users.
	* cgraphunit.c (cgraph_assemble_pending_functions): Process
	cgraph_expand_queue.
	(cgraph_expand_all_functions): Likewise.
	(cgraph_finalize_pending_functions): Remove.  Update callers.

	* tree.h (OMP_DIRECTIVE_P): Define.
	(OMP_PARALLEL_FN): Define.
	(OMP_PARALLEL_DATA_ARG): Define.
	(OMP_SECTIONS_SECTIONS): Define.
	* tree-pass.h (pass_expand_omp): Declare.
	* omp-low.c (struct omp_region): Declare.
	(struct omp_context): Remove fields 'parallel_type',
	'parallel_start_ix' and 'parallel_start_additional_args'.
	Update all users.
	(struct omp_for_data): Rename from struct expand_omp_for_data.
	(omp_regions): New static variable.
	(root_omp_region): New static variable.
	(find_omp_clause): Make static.
	(is_in_combined_parallel_ctx): Remove.
	(is_combined_parallel): New.
	(extract_omp_for_data): Move earlier in the file.
	(workshare_safe_to_combine_p): New.
	(get_ws_args_for): New.
	(determine_parallel_type): Move earlier in the file.
	(omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
	child function.
	(omp_copy_decl): Likewise.
	(create_omp_child_function): Likewise.
	(lookup_omp_region): New.
	(dump_omp_region): New.
	(debug_omp_region): New.
	(debug_all_omp_regions): New.
	(new_omp_region): New.
	(scan_omp_parallel): If parallel_nesting_level > 1, the
	directive is nested within another parallel directive.
	Set OMP_PARALLEL_FN.
	(scan_omp_for): Do not try to handle combined parallel+for
	cases.
	Remove FIXME comment.
	(scan_omp_nested): Remove.
	(scan_omp_1): Do not call scan_omp_nested when
	parallel_nesting_level is > 1.
	Do not change the DECL_CONTEXT of local variables found.
	(lookup_decl_in_outer_ctx): New.
	(lower_rec_input_clauses): Rename from expand_rec_input_clauses.
	(lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
	(lower_reduction_clauses): Rename from expand_reduction_clauses.
	(lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
	If CTX is nested, lookup VAR in the outer context when
	building copy assignment.
	(lower_send_clauses): Rename from expand_send_clauses.
	If CTX is nested, lookup VAR in the outer context when
	building copy assignments.
	(lower_send_shared_vars): Rename from expand_send_shared_vars.
	If CTX is nested, lookup VAR in the outer context when
	building copy assignments.
	(expand_parallel_call): Rename from build_parallel_call.
	Handle combined parallel+workshare cases.
	Re-implement to emit code into the CFG.
	(list2chain): New.
	(expand_omp_parallel): Re-implement to emit code into the CFG.
	Call move_sese_region_to_fn to outline the sub-graph
	containing the parallel region.
	(expand_omp_for_1): Remove.
	(expand_omp_for_generic): Re-implement to emit code into the
	CFG.
	(expand_omp_for_static_nochunk): Likewise.
	(expand_omp_for_static_chunk): Likewise.
	(expand_omp_for): Likewise.
	(expand_omp_sections): Likewise.
	(remove_exit_barriers): New.
	(expand_omp_synch): New.
	(expand_omp): New.
	(build_omp_regions_1): New.
	(build_omp_regions): New.
	(execute_expand_omp): New.
	(gate_expand_omp): New.
	(pass_expand_omp): Define.
	(lower_omp_sections): Rename from expand_omp_sections.
	Set OMP_SECTIONS_SECTIONS.
	(lower_omp_single_simple): Rename from expand_omp_single_simple.
	(lower_omp_single_copy): Rename from expand_omp_single_copy.
	(lower_omp_single): Rename from expand_omp_simple.
	(lower_omp_master): Rename from expand_omp_master.
	(lower_omp_ordered): Rename from expand_omp_ordered.
	(lower_omp_critical): Rename from expand_omp_critical.
	(lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
	(lower_omp_for): Re-implement.
	(lower_omp_parallel): Re-implement.
	(lower_regimplify): Rename from expand_regimplify.
	(lower_omp_1): Rename from expand_omp_1.
	If there are syntax errors in the program, replace every
	OpenMP directive with NOP.
	Call lower_omp_* instead of expand_omp_*.
	(lower_omp): Rename from expand_omp.

	* tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
	* tree-gimple.h (enum omp_parallel_type): Remove.
	(gimple_boolify): Declare extern.
	(find_omp_clause, determine_parallel_type): Remove.

	* gimple-low.c (lower_omp_directive): New.
	(lower_stmt): Call it.
	(record_vars_into): Move from ...
	(record_vars): ... here.
	Call record_vars_into with current_function_decl.

	* gimplify.c (struct gimplify_ctx): Remove fields
	combined_pre_p and combined_ctxp.  Update users.
	(get_formal_tmp_var): Add documentation.
	(gimple_boolify): Make extern.
	(gimplify_expr_in_ctx): Remove.  Update callers.
	(gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
	will always be a BIND_EXPR.
	(gimplify_expr): Handle OMP_RETURN_EXPR.
	* tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
	(OMP_PARALLEL): Add 3 operands.
	(OMP_SECTIONS): Add 1 operand.
	(OMP_RETURN_EXPR): Define.

	* tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
	(copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
	* tree-iterator.c (alloc_stmt_list): Assert that we are not
	creating a circular free list.
	(free_stmt_list): Assert that we are not freeing stmt_list_cache.

	* tree-flow.h (move_sese_region_to_fn): Declare.
	(record_vars_into): Declare.
	* tree-cfg.c (make_omp_sections_edges): New.
	(make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
	OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
	OMP_SECTIONS and OMP_SECTION.
	(is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
	(set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
	(verify_stmt): Do not handle OMP_DIRECTIVE_P.
	(gather_blocks_in_sese_region): New.
	(struct move_stmt_d): Declare.
	(move_stmt_r): New.
	(move_block_to_fn): New.
	(move_sese_region_to_fn): New.

	* passes.c (init_optimization_passes): Schedule
	pass_expand_omp after pass_init_datastructures.

	* tree-ssa-operands.c (get_expr_operands): Handle
	OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
	OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.

2006-01-19  Jeff Law  <law@redhat.com>

	* tree-vrp.c (extract_range_from_assert): Refine the result range
	if the variable referenced by the ASSERT_EXPR has a range and
	either the tentative result range or the previous range is a
	VR_ANTI_RANGE.

2006-01-19  Richard Sandiford  <richard@codesourcery.com>

	* c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.

2006-01-19  Jan Hubicka  <jh@suse.cz>

	* tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.

2006-01-19  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
	(expand_compound_operation, expand_field_assignment): Fail if the
	bit lengths of an extract operation are out of range.
	(make_extraction): Compute wanted_inner_mode based on the position
	and length of the extraction.  Make it extraction_mode for non-constant
	positions, and do not modify offset in that case.  When generating a
	new MEM, use a mode that can hold the extraction while keeping correct
	alignment.  Remove code that supported MEMs wrapped by USEs.
	(simplify_shift_const_1, force_to_mode) <case USE>: Remove.

2006-01-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("Y", "y"): New mode attribute.
	("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
	"*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
	"*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
	"*addsi3_imm_cc", "*addsi3_carry1_cc",
	"*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
	"*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
	"*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
	"*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
	"*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
	"*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
	"addsi3", "subsi3"): Insn patterns removed.
	("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
	"*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
	"*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
	"*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
	"*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
	"*sub<mode>3_cconly2"): New insn patterns.
	("addsi3", "subsi3"): New expanders.

2006-01-19  Dorit Nuzman  <dorit@il.ibm.com>

	* Makefile.in (tree-vect-patterns.o): Add rule for new file.
	* tree-vect-analyze.c (vect_determine_vectorization_factor): Use
	existing STMT_VINFO_VECTYPE if available.
	(vect_mark_relevant): Add special handling for stmts that are
	marked as STMT_VINFO_IN_PATTERN_P.
	(vect_analyze_loop): Call vect_pattern_recog.
	* tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
	* tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
	stmt_info.
	(STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
	(vect_recog_func_ptr): New function-pointer type.
	* tree-vect-patterns.c: New file.
	(vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
	(vect_recog_dot_prod_pattern, vect_pattern_recog):
	(vect_pattern_recog_1): New functions.
	(vect_pattern_recog_funcs): New array of function pointers.

	* tree-vectorizer.h (ternary_op): New enum value.
	* tree-vect-transform.c (vect_create_epilog_for_reduction): Added
	declaration. Revised documentation. Removed redundant dump prints.
	Removed redundant argument. Added support for reduction patterns.
	(vectorizable_reduction): Added support for reduction patterns.
	(vect_transform_stmt): Added support for patterns.

	* expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
	* genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
	* optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
	(expand_widen_pattern_expr): New function.
	(init_optabs): Initialize new optabs udot_prod_optab,
	sdot_prod_optab.
	* optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
	(sdot_prod_optab, udot_prod_optab): Define new optabs.
	(expand_widen_pattern_expr): New function declaration.
	* tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
	tree-codes.
	* tree-inline.c (estimate_num_insns_1): Added cases for new
	tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	(op_prio): Likewise.
	(op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
	* tree-ssa-operands.c (get_expr_operands): Added case for
	DOT_PROD_EXPR.
	* tree-vect-patterns.c (widened_name_p): New function.
	(vect_recog_dot_prod_pattern): Added function implementation.
	* tree-vect-transform.c (get_initial_def_for_reduction): Added
	cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
	* config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
	* config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.

	* expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
	* genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
	* optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
	(init_optabs): Initialize new optabs widen_ssum_optab,
	widen_usum_optab.
	* optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
	(widen_ssum_optab, widen_usum_optab): Define new optabs.
	* tree-vect-generic.c: (expand_vector_operations_1): Check type of
	use instead of type of def.
	* tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
	function implementation.
	* config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
	widen_ssumv8hi): New.

	* doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
	patterns.

2006-01-19  Richard Sandiford  <richard@codesourcery.com>

	PR c/25805
	* c-decl.c (add_flexible_array_elts_to_size): New function.
	(finish_decl): Use it.

2006-01-18  Andrew Pinski  <pinskia@physics.uc.edu>

	* diagnostic.h: Include options.h.
	* config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
	dependancies for diagnostic.h.
	* Makefile.in (DIAGNOSTIC_H): Add options.h.

2006-01-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
	(ssa_ro_call_cache_valid): Ditto.
	* tree-ssa-alias.c (sort_tags_by_id): New function.
	(init_transitive_clobber_worklist): Ditto.
	(add_to_worklist): Ditto.
	(mark_aliases_call_clobbered): Ditto.
	(compute_tag_properties): Ditto.
	(set_initial_properties): Ditto.
	(compute_call_clobbered): Ditto.
	(compute_may_aliases):	Call compute_call_clobbered and grouping.
	(compute_flow_sensitive_aliasing): Remove clobbering related code.
	(compute_flow_insensitive_aliasing): Grouping now happens in our
	caller.
	(setup_pointers_and_addressables): Remove clobbering related code.
	(add_may_alias): Ditto.
	(replace_may_alias): Ditto.
	(get_nmt_for): Ditto.
	(create_global_var):
	(is_escape_site): Return an escape_type enumeration.
	* tree-flow-inline.h (is_call_clobbered): Global var does not
	imply call clobbered.
	(mark_call_clobbered): Take a reason for marking this. Remove
	marking of globalness, and cache invalidation.
	(clear_call_clobbered): Remove cache invalidation code.
	* tree-dfa.c (dump_variable): If details is on, dump the reason
	for escaping.
	* tree-outof-ssa.c (create_temp): Copy escape mask from original
	variable.
	* tree-flow.h (struct ptr_info_def): Add escape mask member.
	(struct var_ann_d): Ditto.
	(enum escape_type): New.
	(mark_call_clobbered): Adjust prototype.
	* tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
	are never call clobbered.
	Record reasons for escaping.
	* tree-ssa-structalias.h (is_escape_site): Update prototype.
	* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
	(ssa_ro_call_cache_valid): Ditto.
	(clobbered_v_may_defs): Ditto.
	(clobbered_vuses): Ditto.
	(ro_call_vuses): Ditto.
	(clobber_stats): New.
	(init_ssa_operands): Zero out clobber stats.
	(fini_ssa_operands): Print out clobber stats.
	(get_call_expr_operands): Pass callee fndecl to
	add_call_read_ops).
	(add_call_clobber_ops): Remove use of cache.
	Add use of PURE_CONST information.
	(add_call_read_ops): Remove use of cache.
	Add use of static not_read information.

2006-01-18  Alexandre Oliva  <aoliva@redhat.com>

	Introduce TLS descriptors for i386 and x86_64.
	* config/i386/i386.h (TARGET_GNU2_TLS): New macro.
	(TARGET_ANY_GNU_TLS): New macro.
	(enum tls_dialect): Added TLS_DIALECT_GNU2.
	(struct machine_function): Add tls_descriptor_call_expanded_p.
	(ix86_tls_descriptor_calls_expande_in_cfun): New macro.
	(ix86_current_function_calls_tls_descriptor): Likewise.
	* config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
	(override_options): Introduce gnu2 tls dialect.
	(ix86_frame_pointer_required): Functions containing TLSCALLs are
	not leaves.
	(ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
	Likewise.
	(legitimize_tls_address): Adjust logic for GNU2 TLS.
	(ix86_init_machine_status): Initialize new field.
	(ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
	(ix86_tls_module_base): New.
	* config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
	* config/i386/i386.md (UNSPEC_TLSDESC): New constant.
	(tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
	(tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
	(tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
	(*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
	(tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
	(*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
	* config/i386/predicates.md (tls_modbase_operand): New.
	(tp_or_register_operand): New.

2006-01-18  Daniel Berlin  <dberlin@dberlin.org>

	* ipa-reference.c (check_operand): Allow FUNCTION_DECL.
	(look_for_address_of): Ditto.
	(ipa_init): Walk the function decls.
	(static_execute): Don't set readonly on FUNCTION_DECL's.

2006-01-18  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md (shift spliter): Fix a a typo in the splitter
	for shifts where the source and destination registers are different.

2006-01-18  Paul Brook  <paul@codesourcery.com>

	Merge from csl-arm-branch.
	2005-03-14  Julian Brown  <julian@codesourcery.com>
	* config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
	(aeabi_llsl): Likewise.
	(ashrdi3): Likewise.
	(aeabi_lasr): Likewise.
	(lshrdi3): Likewise.
	(aeabi_llsr): Likewise.
	2005-03-10  Julian Brown  <julian@codesourcery.com>
	* config.gcc: Disable shared libgcc for SymbianOS.
	* config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.

2006-01-18  DJ Delorie  <dj@redhat.com>

	* c-pragma.c (handle_pragma_diagnostic): New.
	(init_pragma): Register it.
	* doc/extend.texi: Document it.

	* diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
	* diagnostic.h (diagnostic_classify_diagnostic): Declare.
	(diagnostic_context): Add classify_diagnostic[].
	* diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
	as errors if they're overridden to DK_WARNING.
	(diagnostic_initialize): Initialize classify_diagnostic[].
	(diagnostic_set_kind_override): New.
	(diagnostic_report_diagnostic): Check for kind changes.
	* opts.c (common_handle_option): Take lang_mask.  Update callers.
	Handle OPT_Werror_.
	* common.opt (Werror=): New.
	* doc/invoke.texi: Document -Werror=*

2006-01-18  Jeff Law  <law@redhat.com>

	* tree-vrp.c (test_for_singularity): Correct test for new
	min limit.  Use operand_equal_p rather than pointer equality
	for testing if new min/max values are equal.

	* tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
	using range information until after propagation and folding.

2006-01-18  Richard Henderson  <rth@redhat.com>
	    Aldy Hernandez  <aldyh@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* omp-low.c: New file.
	* c-omp.c: New file.

2006-01-18  Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Document -fopenmp.
	* tree-dump.h (debug_function): Declare.
	* hooks.c (hook_bool_tree_bool_false): New function.
	(hook_tree_tree_null): Remove.
	(hook_tree_tree_tree_null): New.
	* hooks.h: Update to match.
	* tree-pretty-print.c (debug_tree_chain): New.
	(print_generic_expr): Handle TDF_CHAIN.
	(dump_generic_node): Handle BLOCK.
	Do not abort with incomplete SWITCH_EXPRs.
	Do not dump body of an OpenMP directive if TDF_SLIM is given.
	<case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
	print space after directive name.
	<OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
	Handle OMP_MASTER and OMP_ORDERED.
	Handle printing of OMP_BODY just in one place, goto
	dump_omp_body in the rest of OMP_* nodes that have
	OMP_BODY.
	Don't handle clause nodes here.  Update omp statements to
	use dump_omp_clauses.
	Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
	OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
	OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
	GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
	GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
	GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
	Adjust output for GOMP_PARALLEL.
	(dump_omp_clauses): New.
	(print_declaration): Dump DECL_VALUE_EXPR.
	(op_symbol_1): Split out of op_symbol.
	(dumping_stmts): Remove.  Update all users.
	* cgraph.c (cgraph_analyze_queue): New.
	(cgraph_add_new_function): New.
	* cgraph.h (cgraph_analyze_queue): Declare.
	(cgraph_add_new_function): Declare.
	(cgraph_lower_function): Remove.
	* tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
	nodes.  Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
	and TYPE_P nodes in its default clause.
	(empty_body_p): New.
	(tree_range_check_failed): New.
	(build5_stat): New.
	* tree.h (OMP_CLAUSE_REDUCTION_INIT,
	OMP_CLAUSE_REDUCTION_MERGE,
	OMP_CLAUSE_REDUCTION_PLACEHOLDER,
	OMP_CLAUSE_PRIVATE_DEBUG,
	OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
	OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
	OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
	OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
	OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
	OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
	OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
	OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
	OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
	OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
	OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
	OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
	OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
	OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
	(TREE_RANGE_CHECK): New.
	(empty_body_p): Declare.
	(enum omp_clause_default_kind): New.
	(build_string_literal): Declare.
	(enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
	(build5_stat, build5): Declare.
	* tree-pass.h (TDF_CHAIN): Define.
	* tree-pass.h (PROP_gimple_lomp): Define.
	(pass_lower_omp): Declare.
	* diagnostic.h (debug_tree_chain): Declare.
	* builtins.c (get_builtin_sync_mode): Use 0 as last argument to
	mode_for_size.
	(expand_builtin): Handle sync BUILT_IN_*_16 builtins.
	* builtins.c (build_string_literal): Make extern.
	* gcc.c (include_spec_function): New.
	(static_spec_functions): Add it.
	(main): Move load of libgomp.spec ...
	(LINK_COMMAND_SPEC): ... here.
	(link_gomp_spec): New.
	(static_specs): Include it.
	(LINK_COMMAND_SPEC): Add link_gomp.
	(GOMP_SELF_SPECS): New.
	(driver_self_specs): Include it.
	(switch_matches): Don't mark inline.
	(main): Load libgomp.spec.
	* tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
	OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
	and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
	* tree-gimple.h (enum omp_parallel): Declare.
	(determine_parallel_type): Declare.
	(omp_firstprivatize_variable): Declare.
	(omp_reduction_init): Declare.
	(diagnose_omp_structured_block_errors): Declare.
	(struct walk_stmt_info): Add want_return_expr.
	(struct walk_stmt_info): Add want_bind_expr, want_locations.
	(find_omp_clause): Declare.
	(insert_field_into_struct): Declare.
	(struct walk_stmt_info): Move from tree-nested.c
	(walk_stmts): Declare.
	* c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
	to 200505.
	* cgraphunit.c (cgraph_lower_function): Make static.
	(cgraph_finalize_pending_functions): New.
	(cgraph_finalize_function): Call it.
	(cgraph_finalize_compilation_unit): Likewise.
	* builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
	BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
	(BT_FN_UINT_UINT): New.
	(DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
	DEF_FUNCTION_TYPE_VAR_4): Document.
	(BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
	BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
	BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
	BT_FN_VOID_OMPFN_PTR_UINT_UINT,
	BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
	BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
	* builtins.def: Update DEF_BUILTIN comment to include COND argument.
	Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
	into separate files.
	(DEF_GOMP_BUILTIN): New.
	(BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
	BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
	BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
	BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
	BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
	BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
	BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
	BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
	BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
	BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
	BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
	BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
	BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
	BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
	BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
	BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
	BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
	BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
	BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
	BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
	* sync-builtins.def: New file, moved from builtins.def.
	* omp-builtins.def: New file, moved from builtins.def.
	* c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
	* gimple-low.c (lower_function_body): Clear data.
	(lower_stmt): Do not handle COMPOUND_EXPR.
	Remove call to print_node_brief.
	* c-tree.h (c_finish_omp_clauses): New prototype.
	(C_DECL_THREADPRIVATE_P): Define.
	(lookup_name_no_remap, c_omp_remap_private): Remove
	(c_begin_omp_parallel, c_finish_omp_parallel): Update.
	(check_for_loop_decls): Update decl.
	(lookup_name_no_remap, c_omp_remap_private): Declare.
	(build_indirect_ref, build_modify_expr, pushdecl,
	pushdecl_top_level): Move to c-common.h.
	* dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
	before the switch, but just in the 2 places that need it.
	* c-decl.c (diagnose_mismatched_decls): Do not check for
	mismatched thread-local attributes when OLDDECL is marked
	threadprivate and NEWDECL has no thread-local attributes.
	(merge_decls): Merge C_DECL_THREADPRIVATE_P.
	(c_gimple_diagnostics_recursively): Rename from
	c_warn_unused_result_recursively.  Invoke
	diagnose_omp_structured_block_errors.
	(check_for_loop_decls): Return a singular decl found.
	* langhooks.c (lhd_omp_predetermined_sharing): Return
	OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
	(lhd_omp_firstprivatize_type_sizes): New.
	(lhd_omp_assignment): New.
	(lhd_omp_predetermined_sharing): New.
	* langhooks.h (struct gimplify_omp_ctx): Forward declare.
	(struct lang_hooks_for_types): Add
	omp_firstprivatize_type_sizes, omp_privatize_by_reference,
	omp_predetermined_sharing, omp_disregard_value_expr,
	omp_private_debug_clause, omp_clause_default_ctor,
	omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
	(c_finish_omp_clauses): New.
	(c_finish_bc_stmt): Diagnose break within omp for.
	(c_begin_omp_parallel, c_finish_omp_parallel): New.
	(build_unary_op): Return error_mark after reporting
	a readonly_error.
	(build_modify_expr): Likewise.
	* gimplify.c: Include optabs.h and pointer-set.h.
	(enum gimplify_omp_var_data): Declare.
	(struct gimplify_omp_ctx): Declare.
	(struct gimplify_ctx): Add fields prev_context, combined_pre_p
	and combined_ctxp.
	(gimplify_ctxp, gimplify_omp_ctxp): New local variables.
	(push_gimplify_context, pop_gimplify_context): Allow nesting.
	(splay_tree_compare_decl_uid): New.
	(new_omp_context): New.
	(delete_omp_context): New.
	(gimple_add_tmp_var): Call omp_add_variable.
	(gimplify_bind_expr): Likewise.
	(gimplify_var_or_parm_decl): If omp_notice_variable returned
	true, disregard DECL_VALUE_EXPR on the decl if any.
	(gimplify_expr_in_ctx): New.
	(omp_firstprivatize_variable, omp_firstprivatize_type_sizes
	omp_add_variable, omp_notice_variable, omp_is_private
	gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
	gimplify_adjust_omp_clauses, gimplify_omp_parallel
	gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
	gimplify_omp_atomic_fetch_op, goa_stabilize_expr
	gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
	gimplify_omp_atomic): New.
	(gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
	OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
	OMP_CRITICAL and OMP_ATOMIC.
	(gimplify_body): Verify gimplify_ctxp is empty after gimplification.
	* c-pragma.h (enum pragma_kind): Add
	PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
	PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
	PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
	PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
	PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
	PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
	PRAGMA_OMP_THREADPRIVATE.
	* tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
	OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
	OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
	OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
	OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
	OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
	OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
	OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
	OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
	* print-tree.c (print_node): Dump DECL_VALUE_EXPR.
	* tree-ssa-dce.c (find_control_dependence): Do not assume that
	ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
	* tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
	OpenMP directives.
	(struct nesting_info): Add field_map,
	suppress_expansion, debug_var_chain.
	(create_nesting_tree): Initialize them.
	(lookup_field_for_decl): Use field_map.
	(get_nonlocal_debug_decl, get_local_debug_decl): New.
	(convert_local_omp_clauses): New.
	(finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
	(walk_body): Split out of walk_function.
	(convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
	(convert_nonlocal_reference): Handle omp statements.
	(convert_local_reference): Likewise.
	(unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
	(unnest_nesting_tree): New.
	(lower_nested_functions): Call it.
	(insert_field_into_struct): Make extern.
	(struct walk_stmt_info): Move to tree-gimple.h.
	(walk_stmts): Make extern.
	* omp-builtins.def: New file.
	* tree-iterator.c (expr_only): Clarify comment.
	* c-common.h (pushdecl_top_level, pushdecl,
	build_modify_expr, build_indirect_ref,
	c_finish_omp_master, c_finish_omp_critical,
	c_finish_omp_ordered, c_finish_omp_barrier,
	c_finish_omp_atomic, c_finish_omp_flush,
	c_finish_omp_for, c_split_parallel_clauses,
	omp_clause_default_kind, c_omp_sharing_predetermined,
	c_omp_remap_decl): Declare.
	* Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
	(OBJS-common): Add omp-low.o.
	(c-omp.o, omp-low.o): Add.
	(gimplify.o): Add dependency on $(OPTABS_H).
	(GTFILES): Add omp-low.c.
	(gt-stringpool.h): Add.
	* tree-cfg.c (set_bb_for_stmt): Do not update the
	block-to-labels map if we are currently expanding to RTL.
	(tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
	checks.
	Handle IDENTIFIER_NODE.
	(tree_verify_flow_info): Do not ICE when emitting error
	messages about invalid labels.
	(dump_function_to_file): Reset CFUN before emitting the body
	of the function.
	(debug_function): New.
	* passes.c (init_optimization_passes): Schedule
	pass_lower_omp.
	* langhooks-def.h (lhd_omp_predetermined_sharing,
	lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
	Declare.
	(LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
	(LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
	LANG_HOOKS_OMP_PREDETERMINED_SHARING,
	LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
	LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
	LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
	LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
	LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
	LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
	(LANG_HOOK_DECLS): Use them.

2006-01-18  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
	    Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* c-parser.c (pragma_omp_clause): Define.
	(c_parser_declaration_or_fndef): Document OpenMP syntax.
	(c_parser_compound_statement): Likewise.
	(c_parser_statement): Likewise.
	(c_parser_pragma): Handle omp pragmas.
	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
	OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
	(c_parser_omp_clause_name, check_no_duplicate_clause,
	c_parser_omp_variable_list,
	c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
	c_parser_omp_clause_copyprivate,
	c_parser_omp_clause_default,
	c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
	c_parser_omp_clause_lastprivate,
	c_parser_omp_clause_nowait,
	c_parser_omp_clause_num_threads,
	c_parser_omp_clause_ordered, c_parser_omp_clause_private,
	c_parser_omp_clause_reduction,
	c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
	c_parser_omp_all_clauses, c_parser_omp_structured_block,
	c_parser_omp_atomic, c_parser_omp_barrier,
	c_parser_omp_critical, c_parser_omp_flush,
	c_parser_omp_for_loop, c_parser_omp_for,
	c_parser_omp_master, c_parser_omp_ordered,
	c_parser_omp_sections_scope, c_parser_omp_sections,
	c_parser_omp_parallel, c_parser_omp_single,
	c_parser_omp_construct, c_parser_omp_threadprivate): New.
	* c-pragma.c (init_pragma): Do omp pragma registration here.
	* c.opt (fopenmp): New flag.

2006-01-18  Eric Christopher  <echristo@apple.com>

	* gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
	* config/darwin.h (GOMP_SELF_SPECS): Define.

2006-01-18  Kazu Hirata  <kazu@codesourcery.com>

	* rtl.h: Remove the prototype for reg_alloc.

2006-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/25731
	* config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
	hppa[12]*-*-hpux11*): Override default shared libgcc version for both
	sjlj and dwarf2 exception handling.
	* pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
	Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
	* pa/pa.c (function_value): Treat complex and vector types as
	aggregates.
	(function_arg): Likewise.  Only pass scalar floats in the floating
	point argument registers.
	* pa/t-slibgcc-dwarf-ver: New file.
	* pa/t-slibgcc-sjlj-ver: New file.
	* pa/t-slibgcc-elf-ver: Delete file.

2006-01-19  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
	unlikely_test_section_p test.

2006-01-18  Kazu Hirata  <kazu@codesourcery.com>

	* mode-switching.c (optimize_mode_switching): Make it static.
	* basic-block.h: Remove the prototype for
	optimize_mode_switching.

	* modulo-sched.c (sms_schedule): Make it static.
	* rtl.h: Remove the prototype for sms_schedule.

	* postreload-gcse.c (gcse_after_reload_main): Make it static.
	* rtl.h: Remove the prototype for gcse_after_reload_main.

	* reg-stack.c (reg_to_stack): Make it static.
	* rtl.h: Remove the prototype for reg_to_stack.

	* regrename.c (regrename_optimize, copyprop_hardreg_forward):
	Make them static.
	* rtl.h: Remove the prototypes for regrename_optimize and
	copyprop_hardreg_forward.

2006-01-18  Eric Botcazou  <ebotcazou@adacore.com>

	* config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
	alpha_split_tmode_pair.  Add 'mode' and 'fixup_overlap' arguments.
	Test against the appropriate null constant for the mode.
	If 'fixup_overlap' is true, swap the operands if they overlap.
	(alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
	* config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
	alpha_split_tmode_pair and adjust for above change.
	* config/alpha/alpha.md (movtf_internal): Adjust call to
	alpha_split_tfmode_pair and rely on it to swap the operands.
	(movti_internal): New insn and post-reload splitter.
	(movti): New expander.

2006-01-18  Philippe De Muyter  <phdm@macqel.be>

	* config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
	operands.

2006-01-18  Kazu Hirata  <kazu@codesourcery.com>

	* rtlanal.c (global_reg_mentioned_p_1,
	global_reg_mentioned_p): Remove.
	* rtl.h: Remove the prototype for global_reg_mentioned_p.

	* flow.c (initialize_uninitialized_subregs): Make it static.
	* rtl.h: Remove the prototype for
	initialize_uninitialized_subregs.

	* function.c (instantiate_virtual_regs): Make it static.
	* function.h: Remove the prototype for
	instantiate_virtual_regs.

	* regmove.c (regmove_optimize, combine_stack_adjustments):
	Make them static.
	* rtl.h: Remove the prototypes for regmove_optimize and
	combine_stack_adjustments.

2006-01-17  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (COSTS_N_BYTES): New macro.
	(size_cost): Encode costs in bytes so that a reg-reg addition is
	equivalent to COSTS_N_INSNS(1).
	(override_options): Use the size_cost.branch_cost as the default
	ix86_branch_cost when optimizing for size.

2006-01-18  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (D32PBIT_FUNCS): New.
	(D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
	(libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
	D64PBIT_FUNCS and D128PBIT_FUNCS.
	(LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
	* mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
	D128PBIT are set.
	(decnumber_dep): Define.
	* doc/libgcc.texi (Decimal float library routines): New node.
	* config/dfp-bit.h, config/dfp-bit.c: New files.

2006-01-18  Ben Elliston  <bje@au.ibm.com>

	* expr.c (emit_move_change_mode): Always adjust addresses, not
	just during reload.  Copy replacements only during reload.
	(emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
	emit_move_via_integer.

2006-01-17  Shantonu Sen  <ssen@opendarwin.org>

	* Makefile.in (check-%, check-consistency): Use $${srcdir}
	instead of $(srcdir) and ${srcdir}.

2006-01-17  Richard Earnshaw  <rearnsha@arm.com>

	PR target/592
	PR middle-end/11135
	* arm.h (struct machine_function): Add pic_reg.
	* arm.c (arm_pic_register): Make unsigned.
	(arm_override_options): Only set arm_pic_register if
	TARGET_SINGLE_PIC_BASE.
	(use_return_insn): Only test for a pic register if it is fixed.
	(arm_compute_save_reg0_reg12_mask): Likewise.
	(thumb_compute_save_reg_mask): Likewise.
	(legitimate_pic_operand): Factor out some known invariants.
	(legitimize_pic_address): If we don't have a fixed pic register,
	then set up a pseudo in the function entry sequence.  Handle the
	pic base being in a pseudo.
	(arm_load_pic_register): Handle the pic register being in a pseudo.
	(arm_expand_prologue): Only set up the pic register if it is fixed.
	(thumb_expand_prologue): Likewise.
	* arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
	(pic_load_addr_based_insn): Likewise.
	(builtin_setjmp_receiver): Don't restore the pic base if it isn't
	fixed.

2006-01-18  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
	decimal float modes for all floating point registers.

	* config/rs6000/predicates.md (reg_or_mem_operand): Pair up
	match_code "mem" with match_test "macho_lo_sum_memory_operand".

2006-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR c/25682
	* c-typeck.c (build_unary_op): Fold offsetof-like expressions
	even when the pointer is not NULL.

2006-01-16  Ian Lance Taylor  <ian@airs.com>

	* common.opt (ftoplevel-reorder): New option.
	* cgraph.c (cgraph_asm_nodes): New global variable.
	(cgraph_asm_last_node): New static variable.
	(cgraph_order): New global variable.
	(cgraph_create_node): Set new order field.
	(cgraph_varpool_node): Likewise.
	(decide_is_variable_needed): Return true if not
	flag_toplevel_reorder.
	(cgraph_add_asm_node): New function.
	* cgraph.h (struct cgraph_node): Add order field.
	(struct cgraph_varpool_node): Add order field.
	(struct cgraph_asm_node): Define.
	(cgraph_asm_nodes, cgraph_order): Declare.
	(cgraph_add_asm_node): Declare.
	* cgraphunit.c (cgraph_varpool_assemble_decl): New static
	function.
	(cgraph_varpool_assemble_pending_decls): Call it.
	(cgraph_output_pending_asms): New static function.
	(cgraph_finalize_compilation_unit): Call it.
	(struct cgraph_order_sort): Define.
	(cgraph_output_in_order): New static function.
	(cgraph_optimize): Call cgraph_output_pending_asms.  Add code for
	!flag_toplevel_reorder case.
	* c-parser.c: Include "cgraph.h".
	(c_parser_asm_definition): Call cgraph_add_asm_node rather than
	assemble_asm.
	* Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
	than -fno-unit-at-a-time.
	* doc/invoke.texi (Option Summary): Mention
	-fno-toplevel-reorder.
	(Optimize Options): Document -fno-toplevel-reorder.  Mention it in
	-funit-at-a-time documentation.

2006-01-17  Hans-Peter Nilsson  <hp@axis.com>
	    Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.

2006-01-17  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in (FUNCTION_H): New.  Use it instead of
	function.h throughout the file.
	* function.h: Include tree.h.

2006-01-17  Ben Elliston  <bje@au.ibm.com>

	* recog.c: Separate some functions with whitespace.

2006-01-16  Richard Henderson  <rth@redhat.com>

	Merge from gomp branch:
	* Makefile.in (TREE_INLINE_H): New.  Use it as needed.
	* tree-inline.h (struct copy_body_data): Move from tree-inline.c
	and rename from struct inline_data.  Rename callee* to dst*;
	caller* to src*; add copy_decl hook, transform_call_graph_edges,
	transform_new_cfg, transform_return_to_modify, and
	transform_lang_insert_block flags; remove cloning_p, versioning_p,
	update_clones_p.
	(copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
	(copy_decl_for_dup): Remove.
	* tree-inline.c (struct inline_data): Move to header.
	(insert_decl_map): Export.
	(remap_decl): Update for member name changes.  Use copy_decl hook.
	Allow for replacement to be a non-decl.  Remove dead code.
	(remap_type_1): Check for existing mapping.
	(remap_type): Export.
	(remap_decls): Update for member name changes.
	(remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
	(copy_body, setup_one_parameter, declare_return_variable): Likewise.
	(expand_call_inline, optimize_inline_calls, clone_body): Likewise.
	(copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
	(tree_function_versioning, build_duplicate_type): Likewise.
	(copy_body_r): Likewise.  Export.
	(copy_decl_for_dup): Split into ...
	(copy_decl_for_dup_finish, copy_decl_to_var,
	copy_decl_no_change, copy_decl_maybe_to_var): ... these.
	(replace_ref_tree, inlining_p): Remove.

2006-01-16  Kazu Hirata  <kazu@codesourcery.com>

	* ifcvt.c (if_convert): Make it static.
	* rtl.h: Remove the prototype for if_convert.

	* local-alloc.c (local_alloc): Make it static.
	* rtl.h: Remove the prototype for local_alloc.

	* loop.c (loop_optimize): Make it static.
	* cfgloop.h: Remove the prototype for loop_optimize.
	* rtl.h: Likewise.

2006-01-16  DJ Delorie  <dj@redhat.com>

	* reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
	mems.

2006-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Disparage copies between general and floating-point registers
	in 32-bit move patterns.

2006-01-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR testsuite/25741
	* Makefile.in (check-%): Depend on site.exp instead of
	$(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
	directories.

2006-01-16  Kazu Hirata  <kazu@codesourcery.com>

	* global.c (global_alloc): Make it static.
	* rtl.h: Remove the prototype for global_alloc.

2006-01-16  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (struct used_part): Add write_only field.
	(get_or_create_used_part_for): Initialize it to true.
	(create_overlap_variables_for): Don't create structure variables
	for structures that only are written to.
	(find_used_portions): Handle MODIFY_EXPR to track whether a
	structure is only written to.

2006-01-16  Kazu Hirata  <kazu@codesourcery.com>

	* bb-reorder.c (partition_hot_cold_basic_blocks): Make it
	static.
	* basic-block.h: Remove the prototype for
	partition_hot_cold_basic_blocks.

2006-01-16  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>

	* cppspec.c (lang_specific_spec_functions): Remove.
	* gcc.c (lookup_spec_function): Use static_spec_functions directly.
	* gcc.h (lang_specific_spec_functions): Remove.
	* gccspec.c (lang_specific_spec_functions): Remove.

2006-01-16  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (record_value_for_reg): Invalidate registers
	if INSN is null.
	(record_dead_and_set_regs_1): Likewise, by passing them to
	record_value_for_reg.
	(record_dead_and_set_regs): Invalidate stores made by a
	call.  We do not combine across a call, but we still
	relied on equivalences.

2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-vrp.c (extract_range_from_binary_expr): Cope with
	vrp_int_const_binop returning non-constant nodes.

2006-01-16  Paul Brook  <paul@codesourcery.com>

	* config/m68k/m68k.c (output_move_const_into_data_reg):
	Output correct mnemonic for mvz and mvs.

2006-01-16  Gabor Loki  <loki@gcc.gnu.org>

	* rtl-factoring.c: Add sequence abstraction algorithm.
	* cfgcleanup.c (outgoing_edges_match): Extra checks.
	(try_crossjump_to_edge): Avoid deleting preserve label when redirecting
	ABNORMAL edges.
	(block_has_preserve_label): New function.
	* common.opt: Register new pass.
	* Makefile.in: Ditto.
	* passes.c: Ditto.
	* timevar.def: Ditto.
	* tree-pass.h: Ditto.
	* emit-rtl.c (make_jump_insn_raw): Remove forward decl.
	* rtl.h (make_jump_insn_raw): Add forward decl.
	* doc/invoke.texi: Add documentation for -frtl-abstract-sequences.

2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
	    Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_minmax): New static function.
	(fold_binary) <MIN_EXPR>: Call it.
	<MAX_EXPR>: Likewise.
	* stor-layout.c (place_field): Use DECL_SIZE consistently
	in the computation of the new record size.

2006-01-16  Kazu Hirata  <kazu@codesourcery.com>

	* cse.c (cse_condition_code_reg): Make it static.
	* rtl.h: Remove the prototype for cse_condition_code_reg.

	* combine.c (combine_instructions): Make it static.
	* rtl.h: Remove the prototype for combine_instructions.

2006-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/25168
	* tree.c (get_file_function_name_long): Concatenate the first global
	object name with a string derived from the input filename of the object
	for type "F".

2006-01-16  Ben Elliston  <bje@au.ibm.com>

	* config/i386/winnt-stubs.c: Update FSF address.
	* config/xtensa/ieee754-df.S: Ditto.
	* config/xtensa/ieee754-sf.S: Ditto.

2006-01-14  Ian Lance Taylor  <ian@airs.com>

	* ifcvt.c (noce_init_if_info): New static function, broken out of
	noce_process_if_block.
	(noce_process_if_block): Call noce_init_if_info.
	(check_cond_move_block): New static function.
	(cond_move_process_if_block): New static function.
	(process_if_block): Call cond_move_process_if_block.

2006-01-15  Kazu Hirata  <kazu@codesourcery.com>

	* cselib.c (hash_table): Rename to cselib_hash_table.
	(cselib_clear_table, discard_useless_values,
	remove_useless_values, cselib_lookup_mem, cselib_lookup,
	cselib_init, cselib_finish): Adjust uses of hash_table.

2006-01-14  Kazu Hirata  <kazu@codesourcery.com>

	PR tree-optimization/25485
	* tree-vrp.c (extract_range_from_binary_expr): Handle cases
	where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
	is known to be false and true, respectively.

2006-01-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22548
	PR tree-optimization/22555
	PR tree-optimization/22501
	* Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
	* params.def (salias-max-array-elements): New parameter.
	* params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
	* doc/invoke.texi (salias-max-array-elements): Document.
	* tree-flow-inline.h (var_can_have_subvars): We also handle
	arrays now.
	* tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
	COMPONENT_REF.
	* tree-ssa-structalias.c (params.h): Include.
	(push_fields_onto_fieldstack): Handle ARRAY_TYPE.
	(find_func_aliases): Handle multiple constraints from ARRAY_REF.
	(get_constraint_for): For ADDR_EXPR operating on something
	containing an ARRAY_REF, add all subvars to the solution.
	(handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
	* tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
	for creating MUST_DEFs.
	(get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.

2006-01-14  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
	functions.
	(number_of_iterations_ne, number_of_iterations_lt_to_ne,
	assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
	number_of_iterations_le): New functions.
	(number_of_iterations_special): Removed.
	(number_of_iterations_exit): Do not use number_of_iterations_special.
	* tree.c (unsigned_type_for): Always return integer type.

2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
	Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/24257
	* gcse.c (find_moveable_store): Only consider a store movable
	when the SET_SRC of the insn can be assigned to a register.

2006-01-14  Ian Lance Taylor  <ian@airs.com>

	* tree.c (tree_not_class_check_failed): New function.
	* tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
	(tree_not_class_check_failed): Declare.

2006-01-13  Ian Lance Taylor  <ian@airs.com>

	* reload1.c (do_output_reload): Add assertion rejecting a
	CALL_INSN.

2006-01-13  Adam Nemet  <anemet@caviumnetworks.com>

	* combine.c (struct reg_stat): Add new fields truncation_label and
	truncated_to_mode.
	(record_value_for_reg): Reset truncated_to_mode.
	(record_truncated_value): New function.
	(check_promoted_subreg): Call it.  Rename to check_conversions.
	(combine_instructions): Rename check_promoted_subreg to
	check_conversions.
	(reg_truncated_to_mode): New function.
	(make_extraction): Use it.  Check TRULY_NOOP_TRUNCATION.
	(gen_lowpart_or_truncate): New function.
	(force_to_mode): Use it instead of gen_lowpart.

2006-01-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
	VAR is a tag, not its type tag.

2006-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
	alternatives to match style of other entries.
	(*vec_extractv2di_1_sse): Likewise.  Fix mode attr.

2006-01-13  Daniel Berlin  <dberlin@dberlin.org>

	PR tree-optimization/25771
	* tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
	SSA_NAMES.

2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/24365
	* tree-inline.c (declare_return_variable): If the return variable
	was marked as a non gimple complex, set the return slot variable
	to be a non gimple comple variable.

2006-01-13  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_sincos): New function.
	(expand_builtin_mathfn_3): Remove dead code, sin and cos
	do not set errno.
	(expand_builtin): Expand sincos using expand_builtin_sincos.

2006-01-12  DJ Delorie  <dj@redhat.com>

	* config/m32c/shift.md: Rewrite: Allow arbitrary operands for
	shift counts, separate SI shifts for m32c vs m16c, pass shift type
	so that constant shifts can be split.
	* config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
	(m32c_valid_pointer_mode): Make static.
	(shift_gen_func_for): New.
	(m32c_prepare_shift): Use it.  Split large const shifts into
	multiple shifts.
	* config/m32c/predicates.md (shiftcount_operand): Allow more
	general operands.
	(longshiftcount_operand): New.
	* doc/md.texi (Machine Constraints): Document In6.

2006-01-13  Ben Elliston  <bje@au.ibm.com>

	* doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
	REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
	documentation.

2006-01-12  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
	to try to avoid clobbering pieces of structures when we know
	something about the whole structure.
	* tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR

2006-01-13  Ben Elliston  <bje@au.ibm.com>

	* doc/rtl.texi (Insns): Remove statement that libcalls cannot
	return in memory, as this is no limitation is no longer present.

2006-01-12  DJ Delorie  <dj@redhat.com>

	* config/m32c/addsub.md (addhi3): Add two more alternatives, for
	mova with fb, and for fb+0 -> An.

	* config/m32c/mov.md (peephole2): Fix enabling logic.

	* config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
	DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
	DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
	FINI_ARRAY_SECTION_ASM_OP): Define.

	* config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
	variable.
	(m32c_legitimize_reload_address): New logic to reload FB to An.
	(m32c_output_reg_push): Add newline.
	(m32c_output_reg_pop): Likewise.

2006-01-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* struct-equiv.c (find_dying_inputs): Fix off-by-one bug.

2006-01-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.

2006-01-11  Kazu Hirata  <kazu@codesourcery.com>

	* config/sh/predicates.md (sh_rep_vec): Add parallel to
	match_code.

2006-01-11  Ben Elliston  <bje@au.ibm.com>

	* rtlanal.c (find_reg_note): Assert insn is not null.

2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>

	* df-scan.c (df_hard_reg_init): Move declaration of i outside
	ifdef.

2006-01-11  Jeff Law  <law@redhat.com>

	* tree-ssa-threadupdate.c (threaded_edges): New VEC to
	hold edge pairs.
	(mark_threaded_blocks, register_jump_thread): New functions.
	(thread_through_all_blocks): Remove unwanted argument.  No
	longer rely on e->aux to communicate thread target info.
	Call mark_threaded_blocks.  Release the threaded_blocks
	bitmap and threaded_edges vector when complete.
	* tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
	(threaded_blocks): Remove.
	(tree_ssa_dominator_optimize): Remove initialization and
	finalization of threaded_blocks.  Simplify call to
	thread_through_all_blocks.
	(thread_across_edge): Call register_jump_thread rather than
	storing thread information into e->aux.
	(free_all_edge_infos): Simplify now that e->aux is no longer
	used to communicate with thread_through_all_blocks.
	* tree-flow.h (thread_through_all_blocks): Update prototype.
	(register_jump_thread): Prototype.

2006-01-11  Kazu Hirata  <kazu@codesourcery.com>

	* df-core.c (df_compact_blocks, df_bb_replace): Use
	SET_BASIC_BLOCK instead of BASIC_BLOCK.

2006-01-11  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/25734
	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
	stop propagation after successful propagation to the LHS.

2006-01-11  Kazu Hirata  <kazu@codesourcery.com>

	* basic-block.h (control_flow_graph): Change the type of
	x_basic_block_info to VEC(basic_block,gc) *.
	(BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
	basic_block_info.
	(SET_BASIC_BLOCK): New.
	* cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
	instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
	* cfgbuild.c (find_basic_blocks): Likewise.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfgrtl.c (create_basic_block_structure,
	rtl_create_basic_block): Likewise.
	* ifcvt.c (find_if_case_1): Likewise.
	* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
	Likewise.

2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>

	* Makefile.in: Removed rotted odf.c entry.

2006-01-11  Hans-Peter Nilsson  <hp@axis.com>

	PR target/25706
	* config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
	("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
	("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
	output pattern modifier, not %e.
	* config/cris/cris.c (cris_op_str): Update comment about pattern
	modifier.
	(cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
	before falling through into...
	<case 'E'>: Redefined from old 'e' case.

2006-01-11  Jan Hubicka  <jh@suse.cz>

	PR target/25042
	* i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128

2006-01-11  Jan Hubicka  <jh@suse.cz>

	* i386.h (TARGET_DECOMPOSE_LEA): Kill.
	* i386.c (x86_decompose_lea): Kill.
	(ix86_rtx_costs): Kill.

2006-01-11  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_insert_node_to_hashtable): New function.
	* cgraph.h (cgraph_node): Add inline_decl.
	(cgraph_insert_node_to_hashtable): Declare.
	(save_inline_function_body): Declare.
	* cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
	clones.
	(cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
	(cgraph_function_versioning): Update call of tree_function_versioning.
	(save_inline_function_body): New function.
	* function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
	saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
	* ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
	(cgraph_default_inline_p): Likewise.
	(cgraph_decide_inlining_incrementally): Likewise.
	* tree-inline.c (inline_data): Kill saving_p add update_clones_p.
	(copy_bb): Kill saving; do updating of clones.
	(copy_cfg_body): Kill saving.
	(initialize_inlined-parameters): Likewise.
	(expand_call_inline): Likewise.
	(save_body): Kill.
	(tree_function_versioning): New parameter "update_clones".
	(inlining_p): Kill saving.
	* tree-inline.h (tree_function_versioning): Update prototype.
	* tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
	saving.

2006-01-11  Ian Lance Taylor <ian@airs.com>

	* combine.c (struct undo): Remove is_int.  Enumify types of undos.
	Allow undoing set of machine mode.
	(do_SUBST): Use enums instead of is_int.
	(do_SUBST_MODE): New function.
	(SUBST_MODE): New macro.
	(try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
	reg and trying to replace reg_regno_rtx with a new register.
	(undo_all): Use new enums, handle undoing a PUT_MODE change.
	(simplify_set): Use SUBST_MODE.
	(distribute_notes): Remove code that tried to update reg notes
	for regno_reg_rtx changes.

2006-01-11  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/23109
	PR tree-optimization/23948
	PR tree-optimization/24123

	* Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
	* tree-cfg.c (single_noncomplex_succ): New.
	* tree-flow.h (single_noncomplex_succ): Declare it.
	* tree-ssa-math-opts.c (enum place_reciprocal): Remove.
	* tree-ssa-math-opts.c (enum place_reciprocal): Remove.
	(struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
	insert_bb, register_division_in, insert_reciprocals,
	replace_reciprocal, free_bb): New.
	(execute_cse_reciprocals_1): Rewritten.
	(execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
	Do not commit any edge insertion.  Always compute dominators and
	create the allocation pool.
	* target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
	* target.h (struct gcc_target): Add min_divistions_for_recip_mul.
	* targhooks.c (default_min_divistions_for_recip_mul): New.
	* targhooks.h (default_min_divistions_for_recip_mul): New prototype.
	* passes.c (init_optimization_passes): Run recip after tree loop
	optimizations.
	* doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.

2006-01-11  Danny Berlin <dberlin@dberlin.org>
	    Kenneth Zadeck <zadeck@naturalbridge.com>

	* df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
	DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
	DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
	DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
	DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
	DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
	DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
	DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
	DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
	DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
	DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
	DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
	DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
	DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
	DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
	DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
	DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
	DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
	DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
	DF_SCAN_POST_ALLOC): New macros.
	(df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
	df_free_bb_function, df_local_compute_function, df_init_function,
	df_dataflow_function, df_confluence_function_0,
	df_confluence_function_n, df_transfer_function,
	df_finalizer_function, df_free_function, df_dump_problem_function,
	df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
	df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
	df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
	df_urec_bb_info, ) New types.
	(df_invalidated_by_call, df_all_hard_regs, df_state) New public
	variables.
	(df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
	df_analyze_simple_change_some_blocks,
	df_analyze_simple_change_one_block, df_compact_blocks,
	df_bb_replace, df_bb_regno_last_use_find,
	df_bb_regno_first_def_find, df_bb_regno_last_def_find,
	df_insn_regno_def_p, df_find_def, df_find_use,
	df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
	df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
	df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
	debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
	debug_df_chain, df_get_dependent_problem, df_chain_create,
	df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
	df_grow_bb_info, df_chain_dump, df_print_bb_index,
	df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
	df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
	df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
	df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
	df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
	df_rescan_blocks, df_ref_create, df_get_artificial_defs,
	df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
	df_ref_remove, df_insn_refs_delete, df_refs_delete,
	df_reorganize_refs, df_set_state, df_hard_reg_init,
	df_read_modify_subreg_p) New public functions.
	* df-core.c: The core dataflow solver and glue routines for rtl
	dataflow.
	(df_init, df_add_problem, df_set_blocks, df_finish,
	df_hybrid_search_forward, df_hybrid_search_backward,
	df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
	df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
	df_bb_regno_last_use_find, df_bb_regno_first_def_find,
	df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
	df_reg_defined, df_find_use, df_reg_used, df_dump,
	df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
	df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
	debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
	debug_df_useno, reset_df_after_reload): New functions.
	* df-scan.c: The scanning fuctions, once in df.c, completely
	rewritten so that they now fully model the functionality of
	register usage at the backend.
	(df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
	df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
	df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
	df_grow_insn_info, df_rescan_blocks, df_ref_create,
	df_get_artificial_defs, df_get_artificial_uses,
	df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
	df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
	df_refs_delete, df_reorganize_refs, df_set_state,
	df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
	df_def_record_1, df_defs_record, df_uses_record,
	df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
	df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
	df_record_exit_block_uses, df_hard_reg_init): New functions.

	* df-problems.c: Seven concrete dataflow problems that use the
	scanning in df-scan.c and are solved by the engine in df-core.c.
	(df_get_dependent_problem, df_chain_create, df_chain_unlink,
	df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
	df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
	df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
	df_ru_free_bb_info, df_ru_alloc,
	df_ru_bb_local_compute_process_def,
	df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
	df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
	df_ru_transfer_function, df_ru_free, df_ru_dump,
	df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
	df_rd_free_bb_info, df_rd_alloc,
	df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
	df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
	df_rd_transfer_function, df_rd_free, df_rd_dump,
	df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
	df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
	df_lr_local_compute, df_lr_init, df_lr_confluence_0,
	df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
	df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
	df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
	df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
	df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
	df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
	df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
	df_urec_mark_reg_change, df_urec_check_earlyclobber,
	df_urec_mark_reg_use_for_earlyclobber,
	df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
	df_urec_local_compute, df_urec_init, df_urec_local_finalize,
	df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
	df_urec_dump, df_urec_add_problem, df_chain_alloc,
	df_chain_create_bb_process_use, df_chain_create_bb,
	df_chain_finalize, df_chain_free, df_chains_dump,
	df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
	df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
	df_reg_lifetime): New functions.
	* df.c: Deleted file.
	* ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
	consistent with new df api.
	* modulo-sched.c (sms_schedule, rest_of_handle_sms,
	rest_of_handle_sms): Ditto.
	* web.c (unionfind_union, union_defs, entry_register, web_main):
	Ditto.
	* loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
	invariant_expr_equal_p, find_defs, check_dependencies,
	find_invariant_insn, find_invariants_to_move, move_invariant_reg,
	free_inv_motion_data, move_loop_invariants): Ditto.
	* Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
	Update dependencies.
	(odf.c): Added defective entry that was deleted later in day.
	* sched-deps.c (sched_analyze_1): Ditto.

2006-01-11  Zdenek Dvorak <dvorakz@suse.cz>

	* tree-ssa-operands.c (get_expr_operands): Record addressable
	variables directly.  Do not call add_stmt_operands for CONST_DECLs
	and ARRAY_DECLs.
	(get_indirect_ref_operands): Remove handling of *(&a + offset) case.
	(add_stmt_operands): Handle only objects satisfying SSA_VAR_P.

2006-01-11  Ben Elliston  <bje@au.ibm.com>

	* config/i386/i386.c (ix86_return_in_memory): Fix comment: this
	function returns true in the positive case.

2006-01-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/20754
	* config/pa/pa.md: Create separate 32 and 64-bit move patterns
	for SI, DI, SF and DF modes.  Add alternatives to copy between
	general and floating point registers to the 32-bit patterns.
	* config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
	* config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
	(SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
	generating 64-bit code.
	* config/pa/pa.c (output_move_double): Handle copies between general
	and floating registers.

2006-01-10  Stuart Hastings  <stuart@apple.com>

	* config/i386/i386.md (set_got): Update.
	(set_got_labelled): New.  (UNSPEC_LD_MPIC): New.
	(builtin_setjmp_receiver): Mach-O support.
	* config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
	(GOT_SYMBOL_NAME): Define.
	(FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
	(TARGET_DEEP_BRANCH_PREDICTION): Remove.
	* config/i386/i386.c (override_options): Revise for Darwin.
	(USE_HIDDEN_LINKONCE): Enable for Mach-O.  (ix86_file_end): Mach-O
	support.  (darwin_x86_file_end): New.  (output_set_got): Add label
	parameter, revise for Mach-O.  (x86_output_mi_thunk): Likewise.
	* config/i386/i386-protos.h (output_set_got): Likewise.
	* config/darwin.c (machopic_legitimize_pic_address): Update
	regs_ever_live[].

2006-01-10  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
	when MODE isn't BLKmode.

2006-01-10  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/25367
	* config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.

2006-01-10  Hans-Peter Nilsson  <hp@axis.com>

	PR target/25718
	* config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
	for a negative bound.

2006-01-10  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (get_constraint_for_component_ref):
	Never override with anything constraint.

2006-01-10  Jan Beulich  <jbeulich@novell.com>

	* config/i386/i386.c (ix86_data_alignment): Don't force alignment to
	256 bits when optimize_size.

2006-01-10  Jan Beulich  <jbeulich@novell.com>

	* config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
	MASK_ALIGN_DOUBLE.
	* config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
	* config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
	arguments.

2006-01-10  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/predicates.md (easy_fp_constant): Discount decimal
	float modes.
	* config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
	(TARGET_SCALAR_MODE_SUPPORTED_P): Define.
	(USE_FP_FOR_ARG): Reject decimal float modes.
	(function_arg_advance): Likewise.
	(output_toc): Handle emitting TDmode, DDmode and SDmode constants.
	(rs6000_handle_altivec_attribute): Do not permit decimal floating
	point types in AltiVec vectors.
	(rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
	(rs6000_libcall_value): Likewise.

2006-01-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/ieee754-df.S: New file.
	* config/xtensa/ieee754-sf.S: New file.
	* config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
	(LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
	* config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.

2006-01-09  Kazu Hirata  <kazu@codesourcery.com>

	* config/sh/predicates.md (binary_float_operator,
	binary_logical_operator, commutative_float_operator,
	equality_comparison_operator, greater_comparison_operator,
	less_comparison_operator, logical_operator,
	noncommutative_float_operator, shift_operator,
	symbol_ref_operand, unary_float_operator): Remove redundant
	conditionals.

2006-01-09  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
	code to propagate the RHS of a cast into COND_EXPR_COND.  Remove
	now unused arguments.  Callers updated.
	(eliminate_redundant_computations): Remove now unused arguments,
	callers updated.
	(local_fold): Remove, no longer used.
	(find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
	and moved to...
	* tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
	(simplify_cond): New function.
	(forward_propagate_into_cond): Call simplify_cond.

2006-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/sse.md (*vec_extractv2di_1_sse2): New.
	(*vec_extractv2di_1_sse): New.

2006-01-09  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.

2006-01-08  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (get_constraint_for): Remove
	anyoffset argument.
	(get_constraint_for_component_ref): Likewise.
	(do_deref): Likewise.
	(get_constraint_for): Likewise.
	(do_structure_copy): Likewise.
	(handle_ptr_arith): Likewise.
	(find_func_aliases): Likewise.  Remove unused need_anyoffset
	variable.

2006-01-08  J"orn Rennecke  <joern.rennecke@st.com>
	    Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.h (CONST_OK_FOR_K16): Define.
	(CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
	(EXTRA_CONSTRAINT_C16): Remove.
	(EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
	(EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
	EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
	* config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
	constants of SHmedia.  Handle nested constant expressions of
	SHmedia correctly.
	(andcosts): Fix the costs for SHmedia constants.
	(sh_rtx_costs): Take account of outer_code for SHmedia constants.
	* config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
	(*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
	(*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
	(movv4hi_i, movv2si_i):	Likewise.
	(movsi_const): Adjust the second operand of ior so to match with
	the Csu constraint.
	(movdi_const, movdi_const_32bit): Likewise.
	(movdi_const_16bit+1): Don't sign-extend LOW.
	(movdi_const_16bit+2): Likewise.  Remove the zero_extend and truncate
	step.
	(*double_shori): Fix the split condition.  Use GEN_INT instead
	of get_int_mode calls.  Mask lower 16-bit of the argument of
	the last GEN_INT.
	(sym2GOTPLT): Remove.
	(symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
	gen_rtx_UNSPEC.
	* config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
	instead of EXTRA_CONSTRAINT_C16.

2006-01-07  Ian Lance Taylor  <ian@airs.com>
	    David Edelsohn  <edelsohn@gnu.org>

	PR rtl-optimization/25662
	* optabs.c (simplify_expand_binop): Use simplify_binary_operation
	for constant operands instead of simplify_gen_binary.
	* simplify-rtx.c (simplify_gen_binary): Swap commutative operands
	after trying simplify_binary_operation

2006-01-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree.c (iterative_hash_expr): Hash decls based on UID.

2006-01-06  Eric Christopher  <echristo@apple.com>

	* doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
	(TARGET_UNWIND_EMIT): Fix spelling.
	* target.h (gcc_target): Add except_table_label.
	* except.c (output_function_exception_table): Use.
	* varasm.c (default_emit_except_table_label): New.
	* target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
	define.
	(asm_out): Add here.
	* output.h (default_emit_except_table_label): Prototype.
	* config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
	* config/darwin.c (darwin_emit_except_table_label): Define.
	* config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.

2006-01-06  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/18527
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	number_of_iterations_special, number_of_iterations_exit):
	Move base and step of an iv to a single structure.  Add
	no_overflow flag, and use it in # of iterations analysis.
	* tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
	folded_casts argument.
	(simple_iv): Pass base and step in a structure.  Set no_overflow
	flag.
	(scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
	Evaluate expensiveness of computing # of iterations instead of
	the final expression.
	* tree-scalar-evolution.h (affine_iv): New structure.
	(simple_iv): Declaration changed.
	* tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
	* tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
	find_givs_in_stmt): Changed due to simple_iv change.

2006-01-06  Jeff Law  <law@redhat.com>

	PR ada/24994
	* tree-cfg.c (bsi_replace): Rename final argument from
	PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
	change (stmt -> orig_stmt).
	* tree-eh.c (verify_eh_throw_stmt_node): New function.
	(bsi_remove): Add new argument.  Remove EH information
	if requested.
	(verify_eh_throw_table_statements): New function.
	(bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
	updated.
	* tree-optimize.c (execute_free_cfg_annotations): Verify
	the EH throw statement table after removing annotations.
	* except.h (verify_eh_throw_table_statements): Prototype.
	* tree-flow.h (bsi_remove): Update prototype.
	* tree-vrp.c (remove_range_assertions): Add new argument to
	bsi_remove call.
	* tree-ssa-loop-im.c (move_computations_stmt): Likewise.
	* tree-complex.c (expand_complex_div_wide): Likewise.
	* tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
	* tree-tailcall.c (eliminate_tailcall): Likewise.
	* tree-ssa-dse.c (dse_optimize_stmt): Likewise.
	* tree-ssa-loop-ivopts.c (remove_statement): Likewise.
	* tree-nrv.c (tree_nrv): Likewise.
	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
	* tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
	(combine_blocks): Likewise.
	* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
	* tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
	(cleanup_control_flow): Likewise.
	(remove_forwarder_block): Likewise.
	* tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
	* tree-sra.c (sra_replace): Likewise.
	* tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
	(forward_propagate_single_use_vars): Likewise.
	* tree-ssa-dce.c (remove_dead_stmt): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.
	* tree-vect-transform.c (vect_transform_loop): Likewise.
	* tree-outof-ssa.c (rewrite_trees): Likewise.
	* tree-cfg.c (make_goto_expr_edges): Likewise.
	(cleanup_dead_labels): Likewise.
	(tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
	(bsi_move_before, bsi_move_after): Likewise.
	(bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
	(tree_redirect_edge_and_branch, tree_split_block): Likewise.

2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/25528
	* tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
	and IMAGPART_EXPR.
	* tree-flow-inline.h (var_can_have_subvars): Handle complex types
	on non gimple variables.  Also add checks at the top for decls and
	mtags.
	* tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
	complex types.
	* tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
	and IMAGPART_EXPR for creating MUST_DEFs.
	(get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
	and NAME_MEMORY_TAG separately from the DECLs.

2006-01-06  Richard Guenther  <rguenther@suse.de>

	* tree-dfa.c (mark_new_vars_to_rename): Create stmt
	annotation, if necessary.
	* tree-ssa-pre.c (create_expression_by_pieces): Remove
	redundant calls to update_stmt.
	* tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
	Likewise.

2006-01-05  Richard Henderson  <rth@redhat.com>

	* c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.

2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>

	* c-typeck.c: Update copyright date.

2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>

	* c-typeck.c (build_c_cast): Always warn when casting
	from a pointer to an integer of different size, even if
	the node was constant.

2006-01-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22555
	* tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
	if one structure field is an array.
	* tree-ssa-operands.c (get_expr_operands): Continue scanning
	operands even if we found a subvar, but ignore VOPs in this
	case.
	* tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
	for renaming.
	* tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.

2006-01-05  Richard Earnshaw  <rearnsha@arm.com>

	PR middle-end/24998
	* arm/t-netbsd (LIB2FUNCS_EXTRA): Define.

2006-01-05  Richard Guenther  <rguenther@suse.de>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-pass.h (TODO_remove_unused_locals): Define.
	* gimple-low.c (expand_var_p, remove_useless_vars,
	pass_remove_useless_vars): Remove.  Update all users.
	* tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
	(remove_unused_locals): New function.
	* tree-flow.h (remove_unused_locals): Declare.
	* passes.c (execute_todo): Call remove_unused_locals if
	TODO_remove_unused_locals is set.
	* tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
	* tree-ssa-dce.c (pass_dce): Likewise.
	* tree-outof-ssa.c (pass_del_ssa): Likewise.

2006-01-05  Richard Guenther  <rguenther@suse.de>

	* tree-flow.h (struct fieldoff): Decompose field to
	type, size and decl.
	* tree-ssa-alias.c (create_sft): Take type as parameter.
	(create_overlap_variables_for): Store type, size and decl
	in the fieldoff structure.
	* tree-ssa-structalias.c (fieldoff_compare): Adjust users
	of struct fieldoff.
	(push_fields_onto_fieldstack): Likewise.
	(create_variable_info_for): Likewise.  Use offset for the
	SFT name if the decl is not available.

2006-01-04  Paul Brook  <paul@codesourcery.com>

	* config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.

2006-01-04  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (can_put_in_inner_loop): Relax
	restrictions.
	(can_put_after_inner_loop): New function.
	(can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
	(perfect_nestify): Change to make copies and modify uses.

2006-01-04  Richard Henderson  <rth@redhat.com>

	Merge from gomp branch:
	* c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
	via integer constant.
	(pragma_lex): Remove.
	* c-pch.c (c_common_pch_pragma): Accept the name as an argument,
	rather than parsing it.
	* c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
	handle_pragma_extern_prefix): Add %< %> quotes.
	(registered_pragmas): New.
	(c_register_pragma_1): New.
	(c_register_pragma): Use it.
	(c_register_pragma_with_expansion): Likewise.
	(c_invoke_pragma_handler): New.
	(init_pragma): Use cpp_register_deferred_pragma directly for
	pch_preprocess.
	* c-pragma.h (enum pragma_kind): New.
	(pragma_handler): New.
	(c_invoke_pragma_handler): Declare.
	* c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
	CPP_PRAGMA_EOL.
	* c-common.h (c_common_pch_pragma): Update decl.
	* Makefile.in (c-parser.o): Update dependencies.
	(GTFILES): Add c-pragma.h.
	* c-parser.c (struct c_token): Add pragma_kind.
	(struct c_parser): Add in_pragma.
	(c_lex_one_token): Always initialize keyword and pragma_kind.
	Extract data for CPP_PRAGMA.
	(c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
	(c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
	Don't allow CPP_PRAGMA_EOL if in_pragma.
	(c_parser_consume_pragma): New.
	(c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
	(c_parser_skip_to_end_of_parameter): Likewise.
	(c_parser_skip_to_end_of_block_or_statement): Likewise.
	(c_parser_skip_to_pragma_eol): New.
	(c_parser_external_declaration): Handle CPP_PRAGMA.
	(c_parser_compound_statement_nostart): Likewise.
	(c_parser_statement_after_labels): Likewise.
	(c_parser_pragma): New.
	(pragma_lex): Likewise.
	(c_parser_pragma_pch_preprocess): New.
	(c_parser_new): Merge into ...
	(c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.

2006-01-04  Jeff Law  <law@redhat.com>

	PR ada/24994
	* tree-cfg.c (bsi_replace): Remove the original statement
	from the EH throw statement table.

2006-01-04  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
	make the prototype extern "C" and add throw ().

	PR target/25554
	* config/i386/i386.md (testqi_ext_3): Ensure len is positive
	and pos non-negative and pos + len <= 32.
	(testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
	drop pos + len < HOST_BITS_PER_WIDE_INT test.
	(testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.

	PR c/25559
	* c-common.c (handle_vector_size_attribute): Reject zero vector size
	as well as sizes not multiple of component size.

	PR debug/25562
	* function.c (instantiate_expr): New function.
	(instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
	walk its DECL_VALUE_EXPR with instantiate_expr.

	* dwarf2out.c (loc_descriptor_from_tree_1): Don't add
	DW_OP_deref{,_size} if address isn't going to be added.

2006-01-04  Ben Elliston  <bje@au.ibm.com>

	* config/fp-bit.h: Use top-of-file comment from libgcc2.c.
	* config/fp-bit.c: Likewise.

2006-01-03  Daniel Berlin  <dberlin@dberlin.org>

	* dominance.c: Add comment about why we use DFS numbering
	of dominance tree.

2006-01-03  Jakub Jelinek  <jakub@redhat.com>
	    Richard Henderson  <rth@redhat.com>

	Merge from gomp-branch:
	* varasm.c (assemble_variable): Handle thread-local COMMON data.
	* defaults.h (ASM_OUTPUT_TLS_COMMON): Define.

2006-01-03  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/25578
	* combine.c (combine_simplify_rtx, force_to_mode): Don't
	pass a parameter to simplify_shift_const if changing ASHIFTRT
	to LSHIFTRT.

2006-01-03  Adrian Straetling  <straetling@de.ibm.com>

	* builtins.c (get_builtin_sync_mem): New function.
	(expand_builtin_sync_operation, expand_builtin_compare_and_swap,
	expand_builtin_lock_test_and_set, expand_builtin_lock_release):
	Call get_builtin_sync_mem to generate mem rtx.

2006-01-03  Richard Guenther  <rguenther@suse.de>

	PR c/25183
	* stmt.c (add_case_node): Make sure to clear overflow flags
	from ranges.

2006-01-03  Jakub Jelinek  <jakub@redhat.com>

	Merge from gomp-branch.
	* config/sparc/sync.md: New file.
	* config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
	UNSPECV_LDSTUB): New constants.
	* config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
	* config/sparc/predicates.md (memory_reg_operand): New predicate.
	* config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
	prototype.

2006-01-03  Roger Sayle  <roger@eyesopen.com>

	* combine.c (reg_subword_p): New predicate to test whether the
	destination of a set refers to a subword/piece of a register.
	(try_combine): Generalize the code to merge the setting of a
	pseudo to a constant followed by a set of a subword of that
	register to a constant.

2006-01-03  Kazu Hirata  <kazu@codesourcery.com>

	* basic-block.h (control_flow_graph): Change the type of
	x_label_to_block_map to VEC(basic_block,gc) *.
	* tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
	set_bb_for_stmt): Adjust the uses of x_label_to_block_map.

	* tree-ssa-propagate.c (cfg_blocks): Change the type to
	VEC(basic_block,heap) *.
	(cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
	ssa_prop_fini): Adjust the uses of cfg_blocks.

2006-01-03  Steven Bosscher  <stevenb.gcc@gmail.com>

	* fold-const.c (operand_equal_p): Accept a NULL operand 0 for
	COMPONENT_REFs.
	* emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
	hashing trees instead of a pointer hash.
	(mem_attrs_htab_eq): Do a deep compare instead of a pointer
	compare for MEM_EXPR.

	PR rtl-optimization/25130
	* cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
	when comparing MEMs for GCSE

2006-01-03  Ben Elliston  <bje@au.ibm.com>

	* targhooks.h (default_decimal_float_supported_p): Declare.
	* targhooks.c (default_decimal_float_supported_p): Define.
	* target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
	`default_decimal_float_supported_p'.
	* doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.

2006-01-02  Adam Nemet  <anemet@caviumnetworks.com>

	* combine.c (apply_distributive_law <SUBREG>): Check
	TRULY_NOOP_TRUNCATION.

2006-01-02  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (have_switched_text_section): Delete.
	(have_multiple_function_sections): New.
	(have_location_lists): Make 'bool'.
	(add_AT_loc_list): Use 'true' not '1'.
	(dwarf2out_switch_text_section): Set have_multiple_function_sections.
	(output_loc_list): Use have_multiple_function_sections.
	(output_ranges): Likewise.
	(dwarf2out_begin_function): Set have_multiple_function_sections if
	necessary.
	(dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
	Check function_section rather than DECL_SECTION_NAME.
	(dwarf2out_finish): Use have_multiple_function_sections.
	Don't clear have_location_lists.

2006-01-02  Eric Botcazou  <ebotcazou@adacore.com>
	    Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (fixup_reorder_chain): Remove kludge for the
	case of conditional jump jumping to the next instruction.
	* cfgrtl.c (force_nonfallthru_and_redirect): Accept all
	cases of conditional jump jumping to the next instruction.

2006-01-02  Jan Hubicka  <jh@suse.cz>

	* i386.c (*_cost): Add COSTS_N_INSNS.
	(ix86_rtx_costs): Do not use COSTS_N_INSNS.

2006-01-02  Paolo Bonzini  <bonzini@gnu.org>

	PR target/25259
	* Makefile.in (DECNUMINC): Include libdecnumber's build directory.

2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* config/arm/arm.c (all_fpus): Fix comment typo.
	* config/darwin.c: Likewise.
	* config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
	* config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.

2006-01-01  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
	(rs6000_split_compare_and_swapqhi): New.
	* config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
	(sync_compare_and_swapqhi_internal): New.
	* config/rs6000/rs6000-protos.h: Declare.


Copyright (C) 2006 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
