APPLE LOCAL file lno
2004-07-18  Sebastian Pop  <pop@cri.ensmp.fr>

	Merge from mainline (lno-merge-20040718).

2004-07-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-cfg.o): Add CFGLAYOUT_H dependency.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Do not
	free the dominators.
	* passes.c (rest_of_handle_loop2): Free the dominators.
	* sched-rgn.c (compute_trg_info): Initialize fields of variable el.
	* tree-cfg.c: Include cfglayout.h.
	(tree_duplicate_bb): Copy also phi nodes.
	(struct ssa_name_map_entry): New type.
	(collect_defs, add_phi_args_after_copy, ssa_name_map_entry_hash,
	ssa_name_map_entry_eq, allocate_ssa_names,
	rewrite_to_new_ssa_names_def, rewrite_to_new_ssa_names_use,
	rewrite_to_new_ssa_names, tree_duplicate_sese_region): New functions.
	* tree-flow.h (tree_duplicate_sese_region): Declare.
	* tree-ssa-loop-ch.c (mark_defs_for_rewrite, duplicate_blocks): Removed.
	(copy_loop_headers): Use tree_duplicate_sese_region.
	* tree-ssa-loop-manip.c (copy_phi_nodes): Only copy the phi node
	arguments.
	* tree-ssa-pre.c (gate_pre): Disable the optimization.

2004-07-14  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (vect_is_simple_use): Additional argument.
        (vect_is_supportable_op): Call vect_is_simple_use with extra argument.
        (vect_is_supportbale_store): Likewise.
        (vect_is_supportbale_assignment): Likewise.
        (vect_mark_stmts_to_be_vectorized): Cleanup - use vect_is_simple_use.
        (vect_get_vec_def_for_operand): Cleanup.

        (vect_analyze_data_refs): Support certain forms of COMPONENT_REF as
        array_base. Use force_gimple in handling of data-refs.
        (vect_force_dr_alignment_p): Support certain forms of COMPONENT_REF.
        (vect_align_data_ref): Likewise.
        (vect_analyze_data_ref_dependence): Likewise.

        (vect_analyze_operations): Remove duplicate calls to vect_debug_details.
        (vect_analyze_scalar_cycles): Likewise.
        (vect_analyze_data_ref_dependence): Likewise.
        (vect_analyze_data_refs_alignment): Likewise.
        (vect_analyze_pointer_ref_access): Likewise.
        (vect_analyze_pointer_ref_access): Likewise.
        (vect_analyze_data_refs): Likewise.
        (vect_analyze_loop_form): Likewise.

2004-07-13  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.c: Fix some comments for inclusion in mainline.
	(tree_fold_gcd): Moved...
	* tree.c (tree_fold_gcd): ...here.
	* tree.h (tree_fold_gcd): Declared here.

2004-07-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-niter.c (mark_maybe_infinite_loops): Handle abnormal
	edges.

2004-07-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop.o, tree-ssa-dce.o): Add function.h
	dependency.
	* builtins.c (expand_builtin): Handle BUILT_IN_MAYBE_INFINITE_LOOP.
	* builtins.def (BUILT_IN_MAYBE_INFINITE_LOOP): New builtin.
	* function.h (struct function): Add marked_maybe_inf_loops field.
	* timevar.def (TV_MARK_MILOOPS): New timevar.
	* tree-flow.h (mark_maybe_infinite_loops): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_mark_maybe_inf_loops.
	* tree-pass.h (pass_mark_maybe_inf_loops): Declare.
	* tree-ssa-dce.c: Include function.h.
	(find_obviously_necessary_stmts): Mark back edges only if they were
	not marked already.
	(perform_tree_ssa_dce): Do not call mark_dfs_back_edges here.
	* tree-ssa-loop-niter.c (unmark_surely_finite_loop,
	mark_maybe_infinite_loops): New functions.
	* tree-ssa-loop.c: Include function.h.
	(tree_mark_maybe_inf_loops, gate_tree_mark_maybe_inf_loops,
	pass_mark_maybe_inf_loops): New pass.
	* tree-ssa-operands.c (function_ignores_memory_p): Add
	BUILT_IN_MAYBE_INFINITE_LOOP.

2004-07-12  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (tree-scalar-evolution.o): Remove dependences on 
	tree-vectorizer.h and tree-data-ref.h. 
	(tree-data-ref.o): Add dependence on lambda.h.
	* lambda-trans.c, lambda.h: Add missing copyright notice.
	* tree-scalar-evolution.c: Don't include tree-data-ref.h and 
	tree-vectorizer.h.  Fix some comments.
	* tree-scalar-evolution.h (simple_iv): Modified to match the
	declaration that is in mainline.

2004-07-11  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c: Update documentation. Use '#ifdef
        ENABLE_CHECKING' to guard checks that are expected to have been
        verified during analysis. Use vect_debug_details/vect_debug_stats
        for dumping information.

        * tree-vectorizer.h (struct _stmt_vec_info): New field "memtag".
        (STMT_VINFO_MEMTAG): Access macro for new field "memtag".
        * tree-vectorizer.c (vect_create_data_ref): Get tag from new field.
        (vect_analyze_data_refs): Record the tag in the new memtag field.

        (vect_align_data_ref): Remove unused argument.
        (vect_analyze_data_refs): Call vect_align_data_ref with one argument.
        (vect_get_array_first_index): Additional argument to return the
        index rather than as the return value of the function.
        (create_index_for_array_ref): Call vect_get_array_first_index with
        an extra argument.
        (vect_create_data_ref): Remove unused argument.
        (vect_debug_stats, vect_debug_details): Argument "string" removed.

        (vect_analyze_pointer_ref_access): New function.
        (vect_analyze_data_refs): Call vect_analyze_pointer_ref_access.

        (vect_finish_stmt_generation): New function.
        (vect_transform_assignment, vect_transform_op, vect_transform_store):
        (vect_transform_load): Call vect_finish_stmt_generation.

        (get_vectype_for_scalar_type): No need to iterate through the
        different modes - build_vector_type already does that.

        (vect_transform_loop_bound): Check which edge is actually the 'then'.

        (vect_analyze_operations): Temporarily disable vectorization of loops
        with unknown loop bound.
 
2004-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (determine_biv_step): Use simple_iv.

2004-07-09  Devang Patel  <dpatel@apple.com>

	* Makefile.in (tree-ssa-loop-manip.o): Add tree-scalar-evolution.h
	dependency.
	* tree-scalar-evolution.c (scev_rest): Check scalar_evolution_info
	and current_loops.
	* tree-ssa-loop-manip.c (tree-scalar-evolution.h): Include.
	(tree_duplicate_loop_to_header_edge): scev_reset () in the end.

2004-07-09  Steven Bosscher  <stevenb@suse.de>,
	    Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-pre.c: Merge changes from mainline.

2004-07-09  Steven Bosscher  <stevenb@suse.de>

	* varray.h (varray_data_enum): Remove VARRAY_DATA_DG.

2004-07-08  Sebastian Pop  <pop@cri.ensmp.fr>

	* varray.c (element): Don't include dependence_node_def.

2004-07-08  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (OBJS-common): Remove tree-dg.o.
	(tree-dg.o): Removed.
	(GTFILES): Remove tree-dg.h.
	* gengtype.c (open_base_files): Remove tree-dg.h.
	* tree-data-ref.c (subscript_dependence_tester): Don't define.
	(dump_data_dependence_relation): Print data references only
	when they are not NULL.
	(analyze_array_top): Removed.
	(initialize_data_dependence_relation): Is extern now.
	When the data references are NULL the relation is not known.
	(compute_affine_dependence): Is extern now.
	(find_data_references_in_loop): Returns chrec_dont_know when
	failing to analyze a difficult case.  
	(compute_data_dependences_for_loop): Terminate earlier when 
	find_data_references_in_loop fails.
	* tree-data-ref.h (data_dependence_relation): Update comments.
	(initialize_data_dependence_relation, compute_affine_dependence): 
	Declared extern.
	* tree-dg.c, tree-dg.h: Removed.
	* tree-flow-inline.h (dg_node_for_stmt): Removed.
	* tree-flow.h: Don't include tree-dg.h.
	(stmt_ann_d): Remove dependence_node field.
	* tree-ssa-loop.c: Include tree-data-ref.h.
	(tree_vectorize, tree_linear_transform): Don't construct the dg_graph.
	* tree-vectorizer.c: Remove some declarations of static functions.
	(vect_analyze_data_ref_dependence): Extra parameter for the vectorized 
	loop.  Don't rely on the information provided by the data
	reference structure.  Compute directly the relation between
	the data references instead of querying this information in
	the dg_graph.
	(vect_analyze_data_ref_dependences): Pass to
	vect_analyze_data_ref_dependence the information about the
	vectorized loop.
	* varray.h (varray_data_tag): Remove dependence_node_def.

2004-07-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (cand_value_at): Handle types correctly.
	(may_eliminate_iv): Verify there is no overflow.

2004-07-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (find_bivs, find_givs_in_stmt_scev):
	Ensure that step of the iv satisfies cst_and_fits_in_hwi.
	(determine_use_iv_cost_outer): Preserve the fact that the cost
	is infinity.
	* tree-ssa-loop-prefetch.c (WRITE_CAN_USE_READ_PREFETCH,
	READ_CAN_USE_WRITE_PREFETCH, HAVE_FORWARD_PREFETCH,
	HAVE_BACKWARD_PREFETCH, ACCEPTABLE_MISS_RATE): New macros.
	(struct mem_ref_group): Type of step changed to HOST_WIDE_INT.
	(struct mem_ref): Type of delta changed to HOST_WIDE_INT.
	(dump_mem_ref, find_or_create_group, record_ref,
	struct ar_data, idx_analyze_ref, analyze_ref,
	gather_memory_references_ref, issue_prefetch_ref): Updated to reflect
	this.
	(ddown): New function.
	(prune_ref_by_self_reuse, prune_ref_by_group_reuse):
	Implement.
	(prune_ref_by_reuse): Use WRITE_CAN_USE_READ_PREFETCH and
	READ_CAN_USE_WRITE_PREFETCH.
	(prune_group_by_reuse): Add dumps.
	(issue_prefetch_ref): Assert that PREFETCH_BLOCK is a power of 2.
	* tree.c (cst_and_fits_in_hwi): Update comment and fix semantics.
	(int_cst_value, build_int_cst): Check that we use them only for
	types representable in HOST_WIDE_INT.

2004-07-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Remove bogus check for chrec_contains_undetermined.

2004-07-06  Sebastian Pop  <pop@cri.ensmp.fr>

	* basic-block.h (edge_source, edge_destination): Removed.
	* cfgloop.c (superloop_at_depth): Fix comment.
	* cfgloop.h (loop_from_num, outer_loop, inner_loop, next_loop, 
	loop_num, loop_depth, loop_header, loop_nb_iterations, 
	loop_num_exits, loop_exit_edges, loop_exit_edge): Removed.
	* lambda-code.c, tree-cfg.c, tree-data-ref.c, tree-dg.c, 
	tree-elim-check.c, tree-scalar-evolution.c, tree-ssa-dom.c, 
	tree-ssa-loop-ivcanon.c, tree-vectorizer.c: Inline removed functions.
	* tree-data-ref.c: Rewrite some comments.
	* tree-flow-inline.h (loop_of_stmt): Renamed loop_containing_stmt.

2004-07-04  Dorit Naishlos <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_create_data_ref, vect_init_vector): 
	Use insert_on_edge to add code in loop preheader.
	(vect_transform_loop): Make sure there's a preheader BB.

2004-06-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-prefetch.c: New file.
	* Makefile.in (tree-ssa-loop-prefetch.o): Add.
	* timevar.def (TV_TREE_PREFETCH): New.
	* tree-flow.h (tree_ssa_prefetch_arrays,
	standard_iv_increment_position): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_loop_prefetch.
	* tree-pass.h (pass_loop_prefetch): Declare.
	* tree-ssa-loop-ivcanon.c (estimate_loop_size): Force the size to be
	nonzero.
	* tree-ssa-loop-ivopts.c (cst_and_fits_in_hwi): Moved to tree.c.
	(standard_iv_increment_position): New function.
	(zero_p): Export.
	* tree-ssa-loop-niter.c (zero_p): Remove duplicate function.
	* tree-ssa-loop.c (tree_ssa_loop_prefetch,
	gate_tree_ssa_loop_prefetch): New functions.
	(pass_loop_prefetch): New pass structure.
	* tree-ssa-operands.c (function_ignores_memory_p): New function.
	(get_expr_operands): Use it.
	* tree.c (cst_and_fits_in_hwi): Moved from tree-ssa-loop-ivopts.c.
	* tree.h (zero_p, cst_and_fits_in_hwi): Declare.

2004-06-28  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (print_linear_expression): Rename a few variables,
	simplify some code.
	(print_lambda_loop): Ditto.
	(lambda_compute_auxillary_space): Update a comment.
	(gcc_loop_to_lambda_loop): Update code for chrec_dont_know change.
	(struct dir_dist_pair): New.
	(reverse_dep): Ditto.
	(lambda_dep_mult_constant): New function.	
	(lambda_dep_add): Ditto.
	(lambda_vec_distdirvec_mult): Ditto.
	(lambda_vec_distdirmat_mult): Ditto.
	(lambda_deps_positive): Ditto.
	(lambda_transform_legal_p): Ditto.
	* lambda-mat.c (lambda_matrix_mult): Cleanup
	(lambda_matrix_delete_rows): Ditto.
	(lambda_matrix_row_add): Ditto.
	(lambda_matrix_col_exchange): Ditto.
	(lambda_trans_matrix_is_nonsingular): Rename to standard gcc predicate
	naming.
	(lambda_trans_matrix_is_fullrank): Ditto.
	(lambda_trans_matrix_base): Rename to reflect actual computation.
	* lambda.h (lambda_transform_legal_p): Add prototype.
	* tree-loop-linear.c (linear_transform_loops): Rewrite a bit, use legality
	tester to test transforms.

2004-06-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-data-ref.c (build_classic_dist_vector): Add argument, stop 
	making out-of-bounds array accesses when analyzing less than
	all the loops.  Add checks to verify.
	(build_classic_dir_vector): Ditto.
	(compute_data_dependences_for_loop): Pass in starting loop number
	to build_classic_*.

2004-06-27  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree.def (INTERVAL_CHREC): Removed.
	(SCEV_KNOWN, SCEV_NOT_KNOWN): New nodes.
	* tree-pretty-print.c (dump_generic_node): Handle SCEV_KNOWN and 
	SCEV_NOT_KNOWN nodes.
	* tree-chrec.h (build_polynomial_chrec): When one of the
	operands is chrec_dont_know, return directly chrec_dont_know.
	* tree-scalar-evolution.c (instantiate_parameters_1): Same.
	(initialize_scalar_evolutions_analyzer): Build chrec_dont_know using a  
	SCEV_NOT_KNOWN node, and chrec_known with a SCEV_KNOWN node.
	
2004-06-24  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.c (chrec_fold_automatically_generated_operands, 
	chrec_merge): 
	Use chrec_dont_know instead of a call to chrec_contains_undetermined.
	(tree_fold_factorial, tree_fold_binomial, chrec_evaluate): Resurrect.
	(chrec_apply): Reinsert the cases that were removed.
	(chrec_convert): Remove the check for NULL_TREE inserted two days ago.
	* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): As a sequel of 
	removing the tree_fold_* functions, the analyzed trees can contain 
	NON_LVALUE_EXPR nodes.  Use STRIP_TYPE_NOPS for avoiding these nodes.
	(number_of_iterations_in_loop): Add the missing open parenthesis in 
	the debugging dumps.
	(initialize_scalar_evolutions_analyzer): Use an INTERVAL_CHREC for 
	constructing the chrec_dont_know node.  This fixes some strange 
	problems that arise when chrec_dont_know is an INTEGER_CST. 
	* tree.def (INTERVAL_CHREC): Resurrect.

2004-06-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-chrec.c (chrec_merge): Handle case when one of the arguments
	was not analyzed yet correctly.

2004-06-23  Sebastian Pop  <pop@cri.ensmp.fr>
	
	* tree-chrec.c (chrec_fold_automatically_generated_operands): Now
	static.  Clean comments.
	(hide_evolution_in_loop, chrec_merge_types): Removed.  
	* tree-chrec.h (hide_evolution_in_loop,
	chrec_fold_automatically_generated_operands): Remove declarations.
	* tree-scalar-evolution.c: Remove an old part of the comment at the 
	beginning of the file.
	(compute_overall_effect_of_inner_loop, 
	compute_overall_effect_of_inner_loop, add_to_evolution_1,
	analyze_scalar_evolution_1, analyze_scalar_evolution): Test for 
	chrec_dont_know instead of calling chrec_contains_undetermined.
	
2004-06-22  Dorit Naishlos <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_create_data_ref): Fix setting of mem_tag.
	(vect_analyze_data_refs): Make sure we have a mem_tag.

2004-06-22  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-fold-const.c, tree-fold-const.h: Removed.
	* Makefile.in (SCEV_H, tree-chrec.o): Remove tree-fold-const.h.
	(OBJS-common): Remove tree-fold-const.o.
	(tree-fold-const.o): Removed.
	* gengtype.c (open_base_files): Remove tree-fold-const.h.
	* lambda-code.c, tree-chrec.c, tree-data-ref.c, tree-dg.c, 
	tree-elim-check.c, tree-loop-linear.c, tree-pretty-print.c, 
	tree-scalar-evolution.c, tree-ssa-loop-ivcanon.c, 
	tree-ssa-loop-ivopts.c, tree-ssa-loop-niter.c, tree-vectorizer.c: 
	Don't include tree-fold-const.h.
	* tree-chrec.c, tree-data-ref.c: Replace uses of tree_fold_* with 
	fold (build (*, ...))
	* tree-data-ref.c (tree_fold_gcd, tree_fold_divides_p,
	tree_fold_bezout): Saved from deletion here.
	
2004-06-22  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.c, tree-chrec.h, tree-data-ref.c, tree-dg.c, 
	tree-elim-check.c, tree-scalar-evolution.c, tree-ssa-loop-niter.c, 
	tree-vectorizer.c: Replace chrec_top with chrec_dont_know, 
	and chrec_bot with chrec_known.  Replace the checks of chrec_top 
	with calls to chrec_contains_undetermined.
	* tree.def (INTERVAL_CHREC): Removed.  
	* cfgloop.h (loop): Update comments around nb_iterations field.  
	* lambda-code.c (gcc_loop_to_lambda_loop): Always check for 
	undetermined chrec after calling number_of_iterations_in_loop.
	* tree-chrec.c (chrec_fold_multiply_ival_cst, 
	chrec_fold_multiply_ival_ival, 
	chrec_merge_types, chrec_contains_intervals, chrec_evaluate, 
	chrec_merge_intervals): Removed.
	(chrec_fold_plus_1, chrec_fold_plus, chrec_fold_minus, 
	chrec_fold_multiply, chrec_merge, 
	evolution_function_is_affine_multivariat, chrec_convert): 
	Remove uses of INTERVAL_CHREC nodes.
	(chrec_apply): Classify as unknown all the non-affine cases.
	* tree-fold-const.h (tree_fold_binomial): Removed.
	* tree-chrec.h (CHREC_LOW, CHREC_UP, 
	chrec_contains_intervals, build_interval_chrec, 
	build_chrec_top_type, evolution_function_is_multivariate, 
	chrec_should_remain_symbolic): Removed.
	(tree_is_chrec, chrec_zerop, evolution_function_is_affine_p): 
	Remove uses of INTERVAL_CHREC nodes.
	* tree-data-ref.c (analyze_ziv_subscript, 
	analyze_overlapping_iterations): Same.
	* tree-pretty-print.c (dump_generic_node): Same.
	* tree-scalar-evolution.c (chrec_is_positive, 
	instantiate_parameters_1, gather_chrec_stats, 
	initialize_scalar_evolutions_analyzer): Same.
	(analyze_scalar_evolution_in_loop): Make it static.
	(resolve_mixers): Fix comments.
	(chrec_stats, reset_chrecs_counters, dump_chrecs_stats):
	Remove nb_interval_chrec counter.
	(chrec_is_positive, simple_iv): Always check for undetermined after 
	a call to number_of_iterations_in_loop or analyze_scalar_evolution.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables, 
	canonicalize_loop_induction_variables): Same.
	* tree-ssa-loop-ivopts.c (determine_biv_step): Same.
	* tree-ssa-loop-niter.c (find_loop_niter_by_eval): Same.
	(estimate_numbers_of_iterations_loop): Remove redundant call to 
	number_of_iterations_in_loop.
	* tree-scalar-evolution.h (analyze_scalar_evolution_in_loop): 
	Remove declaration, the function is now static.
	* tree-vectorizer.c (vect_analyze_loop_with_symbolic_num_of_iters):
	Don't test for INTERVAL_CHREC nodes.

2004-06-22  Devang Patel  <dpatel@apple.com>
		
        PR 16105	
        * tree-vectorizer.c (vect_analyze_operations): Type of MODIFY_EXPR is
        not reliable. Use LHS's type.

2004-06-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/16001
	* loop-iv.c (iv_number_of_iterations): Prevent copy propagation in
	niter_expr.

2004-06-21  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree.def (PEELED_CHREC): Removed.
	* tree-chrec.c (is_not_constant_evolution, chrec_fold_plus_1, 
	chrec_fold_multiply, chrec_replace_initial_condition, chrec_convert):
	Don't handle PEELED_CHREC nodes.
	(chrec_fold_plus_peel_cst, chrec_fold_plus_poly_peel, 
	chrec_fold_plus_peel_poly, chrec_fold_plus_peel_peel, 
	chrec_fold_multiply_peel_cst, chrec_fold_multiply_poly_peel, 
	chrec_fold_multiply_peel_peel, simplify_peeled_chrec): Removed.
	* tree-chrec.h (tree_is_chrec): Don't handle PEELED_CHREC nodes.
	(build_peeled_chrec, evolution_function_is_peeled_affine_p): Removed.
	* tree-pretty-print.c (dump_generic_node): Don't handle
	PEELED_CHREC nodes.
	* tree-scalar-evolution.c (analyze_evolution_in_loop,
	instantiate_parameters_1): Same.
	(chrec_stats, reset_chrecs_counters, dump_chrecs_stats, 
	gather_chrec_stats): Don't count the number of PEELED_CHREC nodes.

2004-06-18  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (OBJS-common): Remove tree-elim-check.o.
	* tree-scalar-evolution.c (first_iteration_non_satisfying_noev_noev, 
	first_iteration_non_satisfying_noev_ev, 
	first_iteration_non_satisfying_ev_noev, 
	first_iteration_non_satisfying_ev_ev, 
	first_iteration_non_satisfying_1, 
	first_iteration_non_satisfying): Removed.
	(number_of_iterations_in_loop): Clean up.
	* tree-scalar-evolution.h (first_iteration_non_satisfying): Removed.
	* tree-ssa-loop-ivopts.c (zero_p): Compare tree pointer
	against NULL_TREE.
	* tree-ssa-loop.c (tree_ssa_loop_test): Return when loops
	structure is not available.
	(tree_elim_checks): Disabled for the moment.  Don't call
	eliminate_redundant_checks.

2004-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (tree_make_forwarder_block):  Use SET_PHI_RESULT.
	* tree-flow-inline.h (get_use_op_ptr):  Return a use_operand_p.
	(get_use_from_ptr, get_def_from_ptr):  New.  Return operand pointers.
	(get_def_op_ptr):  Return a def_operand_p instead of a 'tree *'.
	(get_v_may_def_result_ptr):  Return a def_operand_p.
	(get_v_may_def_op_ptr, get_vuse_op_ptr):   Return a use_operand_p.
	(get_v_must_def_op_ptr):  Return a def_operand_p.
	(get_phi_result_ptr):  New.  Return a pointer to the result of a PHI.
	(get_phi_arg_def_ptr):  New.  Return a pointer to an argument of a PHI.
	(phi_element_for_edge):  Remove.
	* tree-flow.h (propagate_value, replace_exp):  Change prototype.
	(propagate_tree_value):  Add new prototype.
	(phi_element_for_edge):  Remove prototype.
	* tree-into-ssa.c (mark_def_sites):  Use new operand types.
	(prepare_operand_for_rename):  Split into two functions.
	(prepare_use_operand_for_rename):  Prepare use operands.
	(prepare_def_operand_for_rename):  Prepare def operands.
	(rewrite_stmt):  Use new operand types.
	(rewrite_operand):  Use new operand types, change parameter type.
	* tree-outof-ssa.c (replace_variable):  Split into two functions.
	(replace_use_variable):  Rewrite uses.
	(replace_def_variable):  Rewrite defs.
	(rewrite_trees, rewrite_vars_out_of_ssa):  Use new operand types.
	* tree-phinodes.c (make_phi_node, resize_phi_node):  Use new types.
	(add_phi_arg, remove_phi_arg_num):  Use new operand types.
	* tree-ssa-ccp.c (substitute_and_fold):  Use new operand types.
	(ccp_fold, replace_uses_in):  Use new operand types.
	* tree-ssa-copy.c (replace_ssa_names):  Rename to replace_ssa_names_ann
	and no longer set the value, change parameter type.
	(replace_exp_1):  Use new operand types.
	(propagate_value):  Change parameter type, use new operand types.
	(propagate_tree_value):  Propagate_value without SSA operands.
	(replace_exp, cprop_operand, cprop_into_stmt):  Use new operand types.
	(cprop_into_successor_phis):  Use new operand types.
	* tree-ssa-dom.c (thread_across_edge):  Use new operand types.
	(eliminate_redundant_computations):  Use new operand types.
	* tree-ssa-dse.c (fix_phi_uses):  Use new operand_types.
	(fix_stmt_v_may_defs):  Use new operand_types.
	* tree-ssa-live.c (create_ssa_var_map):  Use new operand_types.
	(build_tree_conflict_graph):  Use new operand_types.
	* tree-ssa-loop.c (duplicate_blocks):  Use PHI_ARG_DEF_FROM_EDGE.
	* tree-ssa-operands.c (struct freelist_d):  Remove.
	(check_optype_freelist, add_optype_freelist):  Remove.
	(allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
	allocate_vuse_optype, allocate_v_must_def_optype):  Call ggc_alloc.
	(free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
	Call ggc_free instead of add_optype_freelist.
	(init_ssa_operands, fini_ssa_operands):  Remove free list code.
	(finalize_ssa_defs, finalize_ssa_uses):  Set new use/def operands.
	* tree-ssa-operands.h (struct def_optype_d):  Change underlying type.
	(struct use_optype_d):  Change underlying type.
	(def_operand_p, use_operand_p):  New types for pointers to operands.
	(USE_OP, DEF_OP, V_MAY_DEF_RESULT, V_MAY_DEF_OP, VUSE_OP, 
	V_MUST_DEF_OP):  Use new pointer type instead of dereferencing directly.
	(USE_FROM_PTR, DEF_FROM_PTR):  New macros to "dereference" operand 
	pointer types.
	(SET_USE, SET_DEF):  New macros to set operands from their pointer.
	(SET_USE_OP, SET_DEF_OP, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP,
	SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands.
	(PHI_RESULT_PTR, PHI_RESULT, SET_PHI_RESULT):  Macros to manage the
	PHI result as an operand.
	(PHI_ARG_DEF_PTR, PHI_ARG_DEF, SET_PHI_ARG_DEF, PHI_ARG_DEF_FROM_EDGE,
	PHI_ARG_DEF_PTR_FROM_EDGE):  Macros to manage the PHI arguments.
	* tree-ssa-pre.c (eliminate):  Call propagate_tree_value.
	* tree-tailcall.c (independent_of_stmt_p, propagate_through_phis):  Use
	PHI_ARG_DEF_FROM_EDGE.
	* tree.h (PHI_RESULT):  Renamed to PHI_RESULT_TREE.
	(PHI_ARG_DEF):  Renamed to PHI_ARG_DEF_TREE.

	* tree-ssa-loop-ivopts.c (find_bivs, mark_bivs,
	find_interesting_uses_outer_or_nonlin, find_interesting_uses_stmt,
	find_interesting_uses_outside, add_old_iv_candidates,
	remove_statement, rewrite_use_nonlinear_expr, split_loop_exit_edge,
	protect_loop_closed_ssa_form_use, compute_phi_arg_on_exit,
	rewrite_use_outer): Use new operand types.

2004-06-16  Dale Johannesen  <dalej@apple.com>

	* Makefile.in (GTFILES): Add tree-chrec.h.
	* tree-chrec.h (chrec_top, chrec_bot): Add GTY.
	* tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
	Set chrec_top, chrec_bot once per compilation.
	* gengtype.c (ifiles):  Add tree-fold-const.h, tree-chrec.h.

2004-06-16  Dale Johannesen  <dalej@apple.com>
	* tree-flow.h (tree_ann_common-d.aux): Document required behavior.
	* tree-ssa-loop-manip.c (allocate_new_names): Don't propagate
	new_names into copies.

2004-06-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/15993
	* tree-ssa-dom.c (thread_across_edge): Do not thread edge if its
	destination is unchanged.

2004-06-14  Dorit Naishlos <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_analyze_data_refs): Minor fix.

2004-06-14  Andrew Pinski  <apinski@apple.com>

	* tree-ssa-return.c: Remove.
	* Makefile.in (OBJS-common): Remove tree-ssa-return.o
	(tree-ssa-return.o): Remove.
	* timevar.def (TV_TREE_RETURN): Remove.
	* tree-optimize.c (init_tree_optimization_passes):
	Do not run pass_return.
	* tree-pass.h (pass_return): Remove declaration.

2004-06-14  Dorit Naishlos <dorit@il.ibm.com>

        * tree-data-ref.c (init_data_ref): New function.
        * tree-data-ref.h (init_data_ref): New function.
        * tree-vectorizer.c (vect_get_array_first_index): Return index instead
        of success status, and support pointers.
        (vect_create_index_for_array_ref): Remove ARRAY_REF restriction, and
        change call to vect_get_array_first_index.
        (vect_create_data_ref): Handle INDIRECT_REFs.
        (vect_is_supportable_store): Handle INDIRECT_REFs.
        (vect_is_supportable_load): Handle INDIRECT_REFs.
        (vect_analyze_data_ref_dependence): Handle INDIRECT_REFs.
        (vect_analyze_data_ref_dependences): Remove usage of variable 'ok'.
        (get_array_base): Removed (not used anymore).
        (vect_force_dr_alignment_p): Use DR_BASE_NAME instead of
        get_array_base.
        (vect_align_data_ref): Likewise.
        (vect_transform_store): Remove ARRAY_REF restriction.
        (vect_transform_load): Remove ARRAY_REF restriction.
        (vect_compute_data_ref_alignment): Support pointers.
        (vect_analyze_data_refs): Support pointers.

        (vect_debug_stats): New Function.
        (vect_debug_details): New Function.
        (vect_transform_loop): Use vect_debug_stats and vec_debug_details.
        (vect_analyze_loop): Use vect_debug_details.
        (vect_analyze_scalar_cycles): Use vect_debug_stats.
        (vect_analyze_data_ref_dependence): Likewse.
        (vect_analyze_data_refs_alignment): Likewise.
        (vect_analyze_data_ref_accesses): Likewise.
        (vect_analyze_data_refs): Likewise.
        (vect_analyze_loop_form): Likewise.

        (vect_gen_if_guard): Formatting fixes (avoid 80 column overflow).
        (vect_update_initial_conditions_of_duplicatd_loop): Likewise.
        (vect_transform_loop): Likewise.
        (vect_analyze_loop_form): Likewise.

2004-06-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from mainline (lno-merge-20040612).

2004-06-13  Dorit Naishlos <dorit@il.ibm.com>

	* tree-chrec.c (evolution_function_is_affine_multivariat): Add check
	for POLYNOMIAL_CHREC.
	* tree-dg.c (ddg_direction_between_stmts): Add check for chrec_top.

	* tree-pass.h (TODO_write_loop_closed): New to-do flag.
	* tree-optimize.c (execute_todo): Handle new to-do flag 
	TODO_write_loop_closed.
	* tree-ssa-loop.c (struct tree_opt_pass pass_vectorize): Set
	TODO_write_loop_closed.

	* tree-vectorizer.c (vect_transform_loop): Add calls to 
	add_bb_to_loop.
	(vect_analyze_data_ref_dependence): Fix last argument in call to 
	ddg_direction_between_stmts.

2004-06-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR target/15944
	* loop-invariant.c (may_assign_reg_p): Use can_copy_p.

2004-06-11  Olga Golovanevsky  <olga@il.ibm.com>
            Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (vect_generate_tmps_on_preheader):
        (vect_gen_if_guard): New functions.
        (vect_update_initial_conditions_of_duplicated_loop):
        Update also phis of bb at the exit of epilog loop.
        (vect_transform_loop): Remove code that now belongs to
        vect_generate_tmps_on_preheader () function. Use
        vect_gen_if_guard function twice.

2004-06-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ch.c: New file.
	* Makefile.in (tree-ssa-loop-ch.o): Add.
	(tree-ssa-loop.o): Add SCEV_H and tree-vectorizer.h dependency.
	* cfgloop.h (current_loops): Declare.
	* common.opt (fivcanon, fivopts, floop-test, ftree-lim): Add.
	(ftree-loop-optimize, fscalar-evolutions, fall-data-deps,
	ftree-ddg): Remove.
	* flags.h (flag_scalar_evolutions, flag_all_data_deps,
	flag_tree_loop, flag_ddg): Removed.
	(flag_tree_lim, flag_ivcanon, flag_ivopts,
	flag_tree_ssa_loop_test): New.
	(f_options): Remove scalar-evolutions, all-data-deps,
	tree-ddg, tree-loop-optimize.
	* toplev.c (flag_scalar_evolutions, flag_all_data_deps,
	flag_tree_loop, flag_ddg): Removed.
	(flag_tree_lim, flag_ivcanon, flag_ivopts,
	flag_tree_ssa_loop_test): New.
	* opts.c (decode_options, common_handle_option): Initialize new
	options.
	* timevar.def (TV_SCALAR_EVOLUTIONS, TV_ALL_DATA_DEPS): Removed.
	(TV_TREE_ELIM_CHECKS, TV_DEP_GRAPH, TV_LIM, TV_COMPLETE_UNROLL,
	TV_UNSWITCH): Added.
	* tree-flow.h (test_unrolling_and_peeling, test_loop_versioning):
	Removed.
	(tree_unroll_loops_completely): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Reorganize loop
	optimizer passes.
	* tree-pass.h (pass_scev, pass_scev_init, pass_scev_anal,
	pass_scev_depend, pass_scev_linear_transform, pass_scev_iv_canon,
	pass_scev_elim_checks, pass_scev_vectorize, pass_scev_done, pass_ddg,
	pass_delete_ddg): Removed.
	(pass_loop_init, pass_loop_test, pass_lim, pass_unswitch,
	pass_iv_canon, pass_record_bounds, pass_elim_checks, pass_vectorize,
	pass_complete_unroll, pass_linear_transform, pass_iv_optimize,
	pass_loop_done): Declare.
	* tree-scalar-evolution.c (current_loops): Moved to tree-ssa-loop.c.
	(dd_info_available): Removed.
	(scev_init, scev_depend, scev_elim_checks, scev_vectorize, scev_done,
	gate_scev, gate_scev_analysis, gate_scev_depend, gate_scev_elim_checks,
	gate_scev_vectorize): Removed.
	(pass_scev, pass_scev_init, pass_scev_anal, pass_scev_depend,
	pass_scev_vectorize, pass_scev_linear_transform,
	pass_scev_iv_canon, pass_scev_elim_checks, pass_scev_done,
	pass_ddg, pass_delete_ddg): Removed.
	* tree-scalar-evolution.h (scev_analysis): Declare.
	(scev_analysis): Export.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Add parameter to control whether find_loop_niter_by_eval is run.
	(canonicalize_induction_variables): Do not unroll loops.
	(tree_unroll_loops_completely): Split from
	canonicalize_induction_variables.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_init,
	tree_ssa_iv_optimize_finalize, tree_ssa_iv_optimize,
	tree_ssa_iv_optimize): Global initialization/finalization removed.
	* tree-ssa-loop-manip.c (test_unrolling_and_peeling,
	test_loop_versioning): Removed.
	* tree-ssa-loop.c: Include tree-scalar-evolution.h and
	tree-vectorizer.h.
	(current_loops): Moved from tree-scalar-evolution.c.
	(tree_ssa_loop_opt): Removed.
	(gate_loop): Removed.
	(pass_loop): Modified.
	(should_duplicate_loop_header_p, mark_defs_for_rewrite,
	duplicate_blocks, do_while_loop_p, copy_loop_headers,
	gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
	(tree_ssa_loop_init, pass_loop_init, tree_ssa_loop_im,
	gate_tree_ssa_loop_im, pass_lim, tree_ssa_loop_unswitch,
	gate_tree_ssa_loop_unswitch, pass_unswitch, tree_ssa_loop_ivcanon,
	gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_ssa_loop_bounds,
	pass_record_bounds, tree_ssa_loop_test, pass_loop_test,
	tree_elim_checks, gate_tree_elim_checks, pass_elim_checks,
	tree_vectorize, gate_tree_vectorize, pass_vectorize,
	tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll,
	tree_linear_transform, gate_tree_linear_transform,
	pass_linear_transform, tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
	pass_iv_optimize, tree_ssa_loop_done, pass_loop_done): New.
	* testsuite/gcc.dg/tree-ssa-chrec/*: Updated.

2004-06-10  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree.def: Remove EXPONENTIAL_CHREC node.
	* tree-chrec.c (is_not_constant_evolution, chrec_fold_plus_1,
	chrec_fold_multiply, chrec_evaluate, chrec_apply,
	chrec_replace_initial_condition, initial_condition,
	hide_evolution_in_loop, hide_evolution_in_other_loops_than_loop,
	evolution_part_in_loop_num, reset_evolution_in_loop,
	reset_evolution_in_loop, chrec_merge, is_multivariate_chrec_rec,
	is_multivariate_chrec, evolution_function_is_affine_multivariate_p,
	evolution_function_is_univariate_p, chrec_convert): Don't
	handle EXPONENTIAL_CHREC nodes.
	(chrec_fold_plus_expo_cst, chrec_fold_plus_cst_expo,
	chrec_fold_plus_poly_expo, chrec_fold_plus_expo_poly,
	chrec_fold_plus_expo_expo, chrec_fold_multiply_poly_expo,
	chrec_fold_multiply_expo_expo, is_pure_sum_chrec): Removed.
	* tree-chrec.h (tree_is_chrec, evolution_function_is_affine_p):
	Don't handle EXPONENTIAL_CHREC nodes.
	(build_exponential_chrec): Removed.
	(no_evolution_in_loop_p): Use a call to tree_is_chrec for
	determining when a node represents a scalar evolution.
	* tree-data-ref.c (siv_subscript_p): Don't handle
	EXPONENTIAL_CHREC nodes.
	* tree-pretty-print.c (dump_generic_node): Same.
	* tree-scalar-evolution.c: Remove FIXME comments about
	EXPONENTIAL_CHREC nodes.  Add a pointer to the slides
	presented at the GCC Summit 2004 about the scalar evolutions.
	(compute_overall_effect_of_inner_loop): Clarify the leading comment.
	(chrec_is_positive, add_to_evolution_1, add_to_evolution,
	instantiate_parameters_1): Don't handle EXPONENTIAL_CHREC nodes.
	(multiply_evolution_1, multiply_evolution): Removed.
	(first_iteration_non_satisfying_ev_ev): Handle only affine
	functions.
	(follow_ssa_edge_in_rhs): Cases that were detected as
	EXPONENTIAL_CHREC nodes are now mapped to the unknown element
	(be it top or bottom) called chrec_top.
	(chrec_stats, reset_chrecs_counters, dump_chrecs_stats,
	gather_chrec_stats): Don't count the EXPONENTIAL_CHREC nodes.
	* tree-vectorizer.c (vect_is_simple_iv_evolution,
	vect_analyze_loop_with_symbolic_num_of_iters): Use
	tree_is_chrec for determining whether the given node has an
	evolution.

2004-06-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR middle-end/15876
	* tree-ssa-loop-ivopts.c (force_var_cost): Initialize DECL_RTL
	correctly.

2004-06-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* passes.c (rest_of_handle_loop2): Run loop optimizations always.

2004-06-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* ra-build.c (livethrough_conflicts_bb): Check also contains_call.

2004-06-09  Olga Golovanevsky  <olga@il.ibm.com>
            Dorit Naishlos <dorit@il.ibm.com>

	* tree-vctorizer.c
	(vect_update_initial_conditions_of_duplicated_loop):
	Handle general form of "init" and "step" of access function.
	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_exit_cfg):
	The exit from loop is taken from bb previous to latch instead
	of latch itself.

2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/15881
	* tree-scalar-evolution.c (count_ev_in_wider_type): Use
	fold_convert instead of convert.
	(compute_overall_effect_of_inner_loop): Likewise.
	(chrec_is_positive): Likewise.
	(add_to_evolution_1): Likewise.
	(add_to_evolution): Likewise.
	(first_iteration_non_satisfying_1): Likewise.
	(follow_ssa_edge_in_rhs): Likewise.
	(interpret_rhs_modify_expr): Likewise.
	(number_of_iterations_in_loop): Likewise.

2004-06-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/15779
	* tree-scalar-evolution.c (scev_initialize): Clean the nb_iterations
	field.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Do
	not clean nb_iterations field.

2004-06-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* version.c (version_string): Update "merged" stamp.

2004-05-30  Daniel Berlin  <dberlin@dberlin.org>

	* tree-loop-linear.c (linear_transform_loops): We don't handle sibling
	loops, or loops with multiple exits, yet.
	* lambda-code.c (invariant_in_loop): Check outer loops too for
	right now.
	(lle_to_gcc_expression): Special case the coefficient == 1 cases.
	(lambda_loopnest_to_gcc_loopnest): Use correct test.

2004-05-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* tree-into-ssa.c (prepare_operand_for_rename): New argument is_use.
	If the operand is for a use, then strip away the SSA_NAME, do not
	strip away the SSA_NAME for a set.  Never call release_ssa_name.
	(mark_def_sites): Appropriately pass additional argument to
	prepare_operand_for_rename.  If a VDEF_RESULT is not an SSA_NAME,
	then set the VDEF_RESULT to the VDEF_OP.
	(set_def_block): Strip away any SSA_NAME to get to the real
	underlying variable.
	(ssa_mark_def_sites): Prevent set_def_block from doing so.

	* tree-ssa-loop.c (mark_defs_for_rewrite): Record defined ssa names.
	(duplicate_blocks): Use rewrite_ssa_into_ssa.
	(pass_ch): Remove TODO_rename_vars.

2004-05-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* opts.c (decode_options): Enable flag_scalar_evolutions by default.

2004-05-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* fold-const.c (fold_widened_comparison,
	fold_sign_changed_comparison): New.
	(fold): Use them.
	* tree-flow.h (struct tree_niter_desc): New field additional_info.
	* tree-ssa-loop-niter.c (simplify_using_outer_evolutions): Do not
	rewrite expressions in-place.
	(tree_simplify_using_condition, simplify_using_initial_conditions):
	New functions.
	(number_of_iterations_exit): Use simplify_using_initial_conditions.
	(struct nb_iter_bound): New field additional.
	(record_estimate, estimate_numbers_of_iterations_loop): Initialize
	field additional.
	(upper_bound_in_type, lower_bound_in_type): Export.  Handle
	unsigned->signed conversion correctly.
	(can_count_iv_in_wider_type): Pass the additional info to
	can_count_iv_in_wider_type_bound.
	(can_count_iv_in_wider_type_bound): Use the additional info.
	* tree.h (lower_bound_in_type, upper_bound_in_type): Declare.
	* config/i386/i386.c (legitimate_constant_p): Do not allow
	integer - symbol.

2004-05-29  Sebastian Pop  <pop@cri.ensmp.fr>

	* lambda-code.c: Spell check.
	* lambda-trans.c: Same.
	* tree-chrec.c: Same.
	* tree-dg.c: Same.
	* tree-loop-linear.c: Same.
	* tree-ssa-loop-im.c: Same.
	* tree-ssa-loop-ivcanon.c: Same.
	* tree-ssa-loop-ivopts.c: Same.
	* tree-ssa-loop-manip.c: Same.
	* tree-ssa-loop.c: Same.
	* tree-vectorizer.c: Same.

2004-05-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-niter.c (number_of_iterations_cond): Record correct
	assumptions.

2004-05-28  Dale Johannesen  <dalej@apple.com>

	* loop-invariant.c (check_maybe_invariant):  Disallow hoisting CALLs.

2004-05-27  Sebastian Pop  <pop@cri.ensmp.fr>

	Merge from mainline (lno-merge-20040526).
	* tree-scalar-evolution.c (draw_tree_cfg): Removed.
	* tree-into-ssa.c: Didn't merged
	http://gcc.gnu.org/ml/gcc-patches/2004-05/msg01231.html

2004-05-25  Sebastian Pop  <pop@cri.ensmp.fr>
            Dorit Naishlos <dorit@il.ibm.com>

        * tree-scalar-evolution.c (first_iteration_non_satisfying_1):
        Include the evolution of the non varying chrec in other_evs.
        (number_of_iterations_in_loop): Don't instantiate the chrecs
        before the computation of loop counts.

2004-05-25  Olga Golovanevsky  <olga@il.ibm.com>
            Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (vect_transform_loop_bound): Advance IVs
        by correct amount.
        (vect_transform_loop, vect_build_symbl_bound): Use shifts
        instead of division/multiplication to advance IVs.

2004-05-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (number_of_iterations_in_loop):
	Do not produce COND_EXPRs.

2004-05-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (resolve_mixers): New function.
	(already_instantiated): Type changed to bitmap.
	(scev_initialize, scev_finalize): Reflect the change.
	(analyze_scalar_evolution_in_loop): Use resolve_mixers.
	(instantiate_parameters_1): Add possibility to just resolve mixers.
	Fold the results.
	(number_of_iterations_in_loop): Use number_of_iterations_exit.
	* tree-ssa-loop-niter.c (simplify_using_outer_evolutions): New
	function.
	(number_of_iterations_exit): Use it.

2004-05-24  Dale Johannesen  <dalej@apple.com>
	* loop-invariant.c (find_defs):  Add DF_EQUIV_NOTES.

2004-05-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop-manip.o): Add cfglayout.h dependency.
	* tree-flow.h (collect_defs, rename_variables_in_bb, rename_op,
	allocate_new_names, free_new_names): Declaration removed.
	(tree_duplicate_loop_to_exit): Declare.
	* tree-ssa-loop-manip.c: Include cfglayout.h.
	(collect_defs, rename_variables_in_bb, rename_op,
	allocate_new_names, free_new_names): Made static.
	(tdlte_rename_variables_in_loop, tdlte_copy_phi_nodes,
	tree_duplicate_loop_to_exit_cfg, tree_duplicate_loop_to_exit):
	Moved from tree-vectorizer.c.
	* tree-vectorizer.c (vect_duplicate_loopm vect_copy_phi_nodes,
	vect_rename_variables_in_loop, vect_tree_duplicate_loop): Moved
	to tree-ssa-loop-manip.c and renamed.

2004-05-20  Olga Golovanevsky  <olga@il.ibm.com>
            Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (vect_transform_loop): New parameter;
        if bound is unknown, duplicates loop before vectorizing.
        (vect_transfrom_loop_bound): New parameter; now deal with
        symbolic loop bound.
        (vect_analyze_loop_with_symbolic_num_of_iters)
        (vect_duplicate_loop, vect_copy_phi_nodes)
        (vect_rename_variables_in_loop, vect_tree_split_edge)
        (vect_update_initial_conditions_of_duplicated_loop):
        (vect_tree_duplicate_loop, vect_build_symbl_bound): New functions.
        (new_loop_vec_info): Initialize the new field loop_vec_info:
        symb_numb_of_iters.
        * tree-vectorizer.h (loop_vec_info: symb_numb_of_iters): Added.
        (LOOP_VINFO_SYMB_NUM_OF_ITERS): Added.
        * cfgloopmanip.c (duplicate_loop): Made non-static.
        * tree-ssa-loop-manip.c (collect_defs): Made non-static.
        (allocate_new_names): Made non-static. Added option to allocate
        for original loop or not.
        (rename_op): Made non-static. Added input check.
        (rename_variables_in_bb): Made mpm-static.
        original loop were also renamed.
        (free_new_names): release_ssa_name only if defs of original
        loop were also renamed.
        * cfgloop.h (duplicate_loop): Declare.
        * tree-flow.h (collect_defs, allocate_new_names, rename_op)
        (rename_variables_in_bb, free_new_names): Declare.

2004-05-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev,
	first_iteration_non_satisfying_ev_noev,
	first_iteration_non_satisfying_ev_ev): Check the assumptions returned
	by number_of_iterations_cond.

2004-05-13  Devang Patel  <dpatel@apple.com>

	* cfgloop.c (get_loop_body_in_bfs_order): New.
	(flow_loop_exit_edges_find): Set EDGE_LOOP_EXIT.
	* cfgloop.h (get_loop_body_in_bfs_order): New.

2004-05-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* expr.c (expand_expr_real_1): Use REF_ORIGINAL information
	from INDIRECT_REFS.
	* tree-flow.h (force_gimple_operand, rewrite_address_base): Declare.
	* tree-ssa-loop-ivopts.c (force_gimple_operand): Expand.
	(add_address_candidates): Add candidates with constant offset
	stripped.
	(idx_remove_ssa_names, unshare_and_remove_ssa_names,
	rewrite_address_base): New.
	(rewrite_use_address): Use rewrite_address_base.
	* tree-into-ssa.c (register_new_def): Remove unused code.
	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
	Handle invariants correctly.
	* tree-cfg.c (tree_split_block): Do not modify the statements.
	* tree.h (REF_ORIGINAL): New macro.

2004-05-12  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.c (chrec_evaluate): Use the type of the chrec
	instead of integer_type_node when folding operations.
	(chrec_apply): Factor chrec_type calls.
	(chrec_eval_next_init_cond): Removed.
	(chrec_convert): Don't propagate overflows introduced by convert.
	* tree-chrec.h (chrec_eval_next_init_cond): Removed.
	* tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev,
	first_iteration_non_satisfying_ev_noev,
	first_iteration_non_satisfying_ev_ev): Use number_of_iterations_cond
	instead of computing the loop counts.

2004-05-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-invariant.c (find_invariant_insn): Handle trapping insns
	correctly.

2004-05-10  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.h (build_chrec_top_type): Disabled, return chrec_top.
	* tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev,
	first_iteration_non_satisfying_ev_noev): Use the type of the chrec
	instead of integer_type_node when folding operations.
	(number_of_iterations_to_overflow): New.
	(first_iteration_non_satisfying_ev_ev): Implement some cases.
	(set_nb_iterations_in_loop): Return chrec_top on overflow.
	(follow_ssa_edge_in_rhs): Handle type conversions "a = (type) rhs".
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Convert the result of find_loop_niter_by_eval to the same type as niter
	before comparing.

2004-05-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-iv.c (determine_max_iter, shorten_into_mode,
	iv_number_of_iterations): Handle constants correctly.
	* rtl.h (get_mode_bounds): Declaration changed.  Duplicate declaration
	removed.
	* stor-layout.c (get_mode_bounds): Return a constant suitable for
	a target mode.

2004-05-06  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.h (build_chrec_top_type): Check that the type has
	min and max values before taking their values.

2004-05-06  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-chrec.h (build_chrec_top_type): New.
	* tree-chrec.c (chrec_fold_multiply_ival_cst,
	chrec_fold_multiply_ival_ival, chrec_fold_plus_1): Use
	build_chrec_top_type instead of returning chrec_top.

	* tree-data-ref.c (dump_data_dependence_relation): Don't dump
	direction per subscript.
	(analyze_array): Use an extra boolean parameter for the access
	mode: read or write.
	(analyze_array_top, finalize_ddr_dependent): New.
	(compute_direction_vector, set_all_subscripts_to): Removed.
	(initialize_data_dependence_relation): The dependence relation
	is unknown when one of the references base name is NULL_TREE.
	(subscript_dependence_tester, build_classic_dist_vector,
	build_classic_dir_vector, compute_affine_dependence):
	Use finalize_ddr_dependent.
	(build_classic_dir_vector): When one of the directions is
	dir_star, the subscript coupling cannot deduce independence.
	(compute_all_dependences): Renamed compute_rw_wr_ww_dependences.
	(compute_rw_wr_ww_dependences): Don't compute read-read
	relations.  Don't compute the reversed dependence relation.
	(find_data_references_in_loop): Use analyze_array_top when the
	MODIFY_EXPR contains a VUSE/VDEF that is not an ARRAY_REF.
	* tree-data-ref.h (data_reference): Add a field is_read.
	(DR_IS_READ): New.
	(DDR_SUBSCRIPTS_VECTOR_FINALIZE): Removed.
	(analyze_array): Change declaration.
	* tree-vectorizer.c (vect_analyze_data_refs): Adapt the use of
	analyze_array to the new prototype.  Pass in the read or write
	mode.

2004-04-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-niter.c: New file.
	* Makefile.in (tree-ssa-loop-niter.o): New.
	* cfgloop.h (struct loop): Add bounds field.
	* df.c (df_reg_clobber_gen): Removed.
	(df_bb_rd_local_compute, df_insn_refs_record, df_rd_local_compute):
	Make more effective for hard regs.
	* loop-invariant.c (check_maybe_invariant, find_defs,
	find_invariant_insn): Handle hard regs.
	* tree-chrec.c (chrec_fold_plus_poly_poly, chrec_fold_multiply,
	chrec_fold_multiply, chrec_merge): Handle types correctly.
	(chrec_convert): Use count_ev_in_wider_type.
	* tree-chrec.h (count_ev_in_wider_type): Declare.
	* tree-flow.h (struct tree_niter_desc): Moved from
	tree-ssa-loop-ivopts.c.
	(number_of_iterations_cond, number_of_iterations_exit,
	loop_niter_by_eval, find_loop_niter_by_eval,
	estimate_numbers_of_iterations, can_count_iv_in_wider_type,
	free_numbers_of_iterations_estimates): Declare.
	* tree-scalar-evolution.c (count_ev_in_wider_type, scev_reset,
	simple_iv): New.
	(number_of_iterations_in_loop): Check that the exit condition
	is tested in every iteration.
	* tree-scalar-evolution.h (scev_reset, simple_iv): Declare.
	* tree-ssa-loop-ivcanon.c (MAX_ITERATIONS_TO_TRACK,
	chain_of_csts_start, get_base_for, get_val_for,
	loop_niter_by_eval, find_loop_niter_by_eval): Moved to
	tree-ssa-loop-niter.c.
	* tree-ssa-loop-ivopts.c (struct tree_niter_desc): Moved to
	tree-flow.h.
	(force_gimple_operand): Accept a variable for the target of
	the assignment.
	(create_iv, rewrite_use_nonlinear_expr,
	rewrite_use_address, rewrite_use_compare,
	rewrite_use_outer): Changed due to this.
	(tree_ssa_iv_optimize_init): Call estimate_numbers_of_iterations.
	(get_var_def): Removed.
	(find_givs_in_stmt_scev): Use simple_iv.
	(inverse, number_of_iterations_cond): Moved to tree-ssa-loop-niter.c.
	(determine_number_of_iterations): Use number_of_iterations_exit.
	(idx_find_step, find_interesting_uses_address): Use
	can_count_iv_in_wider_type.
	(force_var_cost): Determine the costs more precisely.
	(tree_ssa_iv_optimize_finalize): Call
	free_numbers_of_iterations_estimates.
	(tree_ssa_iv_optimize_loop): Call scev_reset.
	* varasm.c (force_const_mem): Set MEM_NOTRAP_P flag.
	* config/rs6000/rs6000.c (rs6000_emit_move): Set MEM_NOTRAP_P flag.

2004-04-27  Sebastian Pop  <pop@cri.ensmp.fr>

	* lambda-code.c (build_int_cst): Moved...
	* tree-data-ref.c (int_cst_value): Moved...
	* tree-ssa-loop-ivopts.c (int_cst_value, build_int_cst): Moved...
	* tree.c (int_cst_value, build_int_cst): ...here.
	* tree.h (int_cst_value, build_int_cst): Declare.

	* tree-chrec.h (is_chrec, symbolic_parameter_expr_p): Removed.

	* tree-chrec.c (evolution_function_is_affine_multivariat): Check that
	the left part is a polynomial before taking its variable.

	* tree-elim-check.c (prove_truth_value): Update the use of
	tree_is_* functions.
	* tree-fold-const.h (tree_is_ge, tree_is_gt, tree_is_le, tree_is_lt,
	tree_is_eq, tree_is_ne): Return true when decidable, and use a
	parameter for returning the result.

	* tree-scalar-evolution.c (types_forbid_solutions_p): Removed.
	(first_iteration_non_satisfying_noev_noev,
	first_iteration_non_satisfying_noev_ev,
	first_iteration_non_satisfying_ev_noev): Update the use of
	tree_is_* functions.  Use no_evolution_in_loop_p instead of
	evolution_function_is_constant_p.  Extends the analyzer to
	symbolic loop counts.
	(first_iteration_non_satisfying): Factorize code.

2004-04-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* config/rs6000/altivec.md: Fix merge problem.

2004-04-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from tree-ssa branch (lno-merge-20040425).

2004-04-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (force_gimple_operand): Strip useless type
	conversions.
	(number_of_iterations_cond): Fix typo.
	(rewrite_use_address): Fix.

2004-04-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-loop-linear.c (linear_transform_loops): Add invariants array.
	* lambda-code.c (gcc_tree_to_linear_expression): Change arguments
	to include invariants array, and an int, instead of a bool.
	Handle invariants.
	(invariant_in_loop): New function.
	(gcc_loop_to_lambda_loop): Add support for invariants as bounds,
	and NE_EXPR tests.
	(gcc_loopnest_to_lambda_loopnest): Add invariants argument,
	init the invariants array, and pass it along to gcc_loop_to_lambda_loop.
	(lle_to_gcc_expression): Handle invariants and simple linear offsets.
	(lambda_loopnest_to_gcc_loopnest): Ditto.
	Also use the right test if the step is negative.

2004-04-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (instantiate_parameters_1): Handle changed
	semantics of analyze_scalar_evolution.  Split off from ...
	(instantiate_parameters): ... here.

2004-04-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Keep
	loop invariants in symbolic form.  Use
	compute_scalar_evolution_in_loop for expressions defined in subloops.
	(chrec_contains_symbols_defined_in_loop): Check for non-strict
	nestedness.
	(compute_scalar_evolution_after_loop): Renamed back to
	compute_overall_effect_of_inner_loop.
	(follow_ssa_edge_inner_loop_phi, interpret_loop_phi):
	Changed due to the renaming.
	(get_scalar_evolution): Return chrec_not_analyzed_yet for complicated
	expressions.
	(compute_scalar_evolution_in_loop): Compute the evolution of the
	expression returned by compute_overall_effect_of_inner_loop.

2004-04-22  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-elim-check.c (prove_truth_value_gt, prove_truth_value_lt,
	prove_truth_value_le, prove_truth_value_ge, prove_truth_value_eq,
	prove_truth_value_ne): Resurrect.
	(prove_truth_value_symbolic): New.  Disabled for the moment.
	(prove_truth_value): Use it when this function fails on unknown.
	(try_eliminate_check): Factorize the code.
	* tree-scalar-evolution.c (compute_scalar_evolution_after_loop):
	Fix the description comment.

2004-04-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (linear_transform_loops): Prototype changed.
	* tree-vectorizer.h (vectorize_loops): Ditto.
	* tree-loop-linear.c (linear_transform_loops): Remove unused
	argument.
	* tree-vectorizer.c (vectorize_loops): Ditto.
	* tree-scalar-evolution.c (scalar_evolution_info): Type changed
	to hash table.
	(new_scev_info_str): Use xmalloc instead of ggc_alloc.
	(hash_scev_info, eq_scev_info, del_scev_info,
	gather_stats_on_scev_database_1): New functions.
	(find_var_scev_info, dump_chrecs_stats, gather_stats_on_scev_database,
	scev_initialize, scev_finalize): Work with hash table instead of a
	list.
	(scev_elim_checks, scev_vectorize): Do not pass unused arguments to
	functions.


2004-04-21  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.c (chrec_apply): Fail on chrec_top when the chrec
	contains symbols defined in the inner loop.  Otherwise perform
	the computation with symbols.
	(no_evolution_in_loop_p): Same.  Moved from here...
	* tree-chrec.h (no_evolution_in_loop_p): ...there.  Define it inline.
	(chrec_contains_symbols_defined_in_loop): Declare.
	* tree-scalar-evolution.c (nb_set_scev, nb_get_scev): New counters.
	(set_scalar_evolution, get_scalar_evolution): Count the number of calls.
	(chrec_contains_symbols_defined_in_loop): Defined.
	(compute_scalar_evolution_after_loop, first_iteration_non_satisfying_1,
	analyze_scalar_evolution_in_loop): Initialize boolean values.
	(dump_chrecs_stats): Dump the get/set counters.

2004-04-21  Sebastian Pop  <sebastian.pop@ensmp.fr>
            Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (compute_scalar_evolution_in_loop):
	Use superloop_at_depth.
	(analyze_scalar_evolution): Keep a symbolic form instead of
	chrec_top.

2004-04-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (instantiate_parameters): Handle casts
	correctly.
	* tree-ssa-loop-manip.c (add_exit_phis_edge): Do not add unnecessary
	phi nodes.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Do not call create_preheaders.

2004-04-20  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-scalar-evolution.c (scev_info_str, new_scev_info_str,
	find_var_scev_info, set_scalar_evolution, get_scalar_evolution):
	Store a single scalar evolution per definition.
	(compute_overall_effect_of_inner_loop): Renamed
	compute_scalar_evolution_after_loop.
	(compute_scalar_evolution_in_loop): New.
	(analyze_scalar_evolution): Use the helper function.
	(analyze_scalar_evolution_1): Helper recursive function.
	Avoid multiple set/get in the scev database when recursively called.

2004-04-20  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (vect_create_index_for_array_ref): Use create_iv
        instead of creating iv's from scratch.
        (vect_transform_loop_bound): Likewise.

2004-04-20  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.c (chrec_fold_multiply_ival_cst,
	chrec_fold_multiply_ival_ival, chrec_fold_plus_1): When the fold
	resulted in an overflow, conservatively answer chrec_top.

2004-04-20  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.c (chrec_fold_multiply_ival_cst): Compute the min
	and max on the multiplication result.
	(chrec_fold_negate): Removed.
	* tree-chrec.h (chrec_fold_negate): Removed.
	* tree-scalar-evolution.c (interpret_rhs_modify_expr):
	Use chrec_fold_minus instead of chrec_fold_negate.

2004-04-20  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.h (evolution_function_is_constant_p): Be careful.
	* tree-data-ref.c (analyze_siv_subscript_affine_affine): Renamed
	analyze_subscript_affine_affine.  Exchange the CHREC_VARIABLEs for
	overlaps.
	(analyze_miv_subscript): Use directly analyze_subscript_affine_affine,
	and avoid the call to evolution_function_is_constant_p.

2004-04-20  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.c (chrec_apply): Fail on chrec_top for symbolic chrecs.
	(no_evolution_in_loop_p): Return false when non decidable, use
	a parameter for returning the result.
	* tree-chrec.h (no_evolution_in_loop_p): Modify its declaration.
	* tree-scalar-evolution.c (add_to_evolution, multiply_evolution):
	Avoid the use of no_evolution_in_loop_p.
	(add_to_evolution_1, multiply_evolution_1): New.
	(multiply_by_expr_the_loop_evolution, add_expr_to_loop_evolution,
	build_exponential_evolution_in_loop,
	build_polynomial_evolution_in_loop): Removed.
	(first_iteration_non_satisfying_1, analyze_scalar_evolution_in_loop):
	Modify the use of no_evolution_in_loop_p.
	* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev,
	find_givs_in_stmt_scev): Check that the result of scev analysis
	does not contain symbols.

2004-04-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p,
	contains_abnormal_ssa_name_p): New functions.
	(find_bivs, find_bivs, find_givs_in_stmt_scev):
	Handle ssa names occuring in abnormal phis.
	* tree-ssa-loop-im.c (movement_possibility): Ditto.

2004-04-18  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c (create_index_for_array_ref): Remove code under
        #ifdef POINTER_ARITHMETIC.
        (vect_create_data_ref): Likewise. Support array addressing
        instead of pointer arithmetic in vectorized code.

2004-04-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from tree-ssa branch:

	2004-03-25  Diego Novillo  <dnovillo@redhat.com>
		* tree-ssa-alias.c (struct alias_info): Change type of field
		'num_references' to varray_type.  Update all users.

2004-04-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-into-ssa.c (struct mark_def_sites_global_data): Change type of
	names_to_rename to sbitmap.
	(insert_phi_nodes_for, insert_phi_nodes_1, insert_phi_nodes):
	Allocate worklist globally.
	(ssa_mark_def_sites_initialize_block, ssa_mark_phi_uses,
	ssa_mark_def_sites, ssa_rewrite_initialize_block,
	ssa_rewrite_phi_arguments, ssa_rewrite_stmt, rewrite_ssa_into_ssa):
	Use sbitmaps instead of bitmaps.

2004-04-15  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-scalar-evolution.c (instantiate_parameters): Don't keep
	symbols after instantiation.  Fully instantiate parameters,
	or fail on chrec_top.

2004-04-15  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-fold-const.h (chrec_merge_types): Move it...
	* tree-chrec.c (multiply_int, divide_int, add_int, substract_int,
	integer_divides_p, lcm, gcd, update_initial_condition_to_origin,
	remove_initial_condition, ): Removed.
	(evolution_function_in_loop_num): Renamed into
	hide_evolution_in_other_loops_than_loop.
	(hide_evolution_in_loop, hide_evolution_in_other_loops_than_loop): New.
	(chrec_merge_types): ... here.
	(chrec_merge): Answer chrec_top on EXPONENTIAL_CHREC.
	(ziv_subscript_p, siv_subscript_p, analyze_ziv_subscript,
	analyze_siv_subscript, analyze_siv_subscript_cst_affine,
	analyze_siv_subscript_affine_cst, analyze_siv_subscript_affine_affine,
	chrec_steps_divide_constant_p, analyze_miv_subscript,
	analyze_overlapping_iterations): Moved from here...
	* tree-chrec.h (evolution_function_in_loop_num): Rename declaration.
	(hide_evolution_in_other_loops_than_loop, hide_evolution_in_loop): New.
	(analyze_overlapping_iterations): No longer extern.

	* tree-data-ref.c (ziv_subscript_p, siv_subscript_p,
	analyze_ziv_subscript,
	analyze_siv_subscript, analyze_siv_subscript_cst_affine,
	analyze_siv_subscript_affine_cst, analyze_siv_subscript_affine_affine,
	chrec_steps_divide_constant_p, analyze_miv_subscript,
	analyze_overlapping_iterations): ... there.
	(initialize_data_dependence_relation,
	access_functions_are_affine_or_constant_p): Moved down.
	(compute_all_dependences): Moved down.  Now is static.
	(build_classic_dir_vector): New.
	(build_classic_dist_vector):
	(find_data_references): Renamed find_data_references_in_loop.
	Now is static.
	(compute_data_dependences_for_loop): New.
	(analyze_all_data_dependences): Use compute_data_dependences_for_loop.
	* tree-data-ref.h (dd_info_available): Don't declare it extern.

	* tree-scalar-evolution.c (dd_info_available): Declare static.
	(select_outer_and_current_evolutions): Removed.
	(stats_*): Move the static variables in the chrec_stats structure.
	(chrec_stats): New structure.
	(first_iteration_non_satisfying_1): In the multivariate case,
	don't forget that the outer loops can change the number of iterations.
	(cannot_analyze_loop_nb_iterations_yet): Removed.
	(follow_ssa_edge_inner_loop_phi): Refine the case where the
	evolution of the inner loop is symbolic.
	(number_of_iterations_in_loop): Factor the end of the cases.

	* tree-dg.c (classic_dist, classic_dir): Declared static.
	(dg_delete_graph): Delete the classic_dist and classic_dir.
	(dg_create_graph): Adapt to use compute_data_dependences_for_loop.
	(gate_ddg, gate_delete_ddg, pass_ddg, pass_delete_ddg): Moved in
	tree-scalar-evolution.c.
	* tree-dg.h (dg_create_graph): Pass in struct loops.

2004-04-15  Dorit Naishlos <dorit@il.ibm.com>

        * tree-data-ref.h (struct data_reference): New field "aux".
        * tree-vectorizer.h (aligned_access_p, unknown_alignment_for_access_p):
        New functions.
        (DR_MISLAIGNMENT): New macro, for accessing the new 'aux' field in
        data_reference.
        * tree-vectorizer.c: (vect_analyze_data_refs_alignment): New function.
        (vect_compute_data_refs_alignment): New function.
        (vect_compute_data_ref_alignment): New function.
        (vect_enhance_data_refs_alignment): New function.
        (vect_force_dr_alignment_p): New function.
        (vect_align_data_ref): Use new functions aligned_access_p and
        vect_force_dr_alignment_p.
        (vect_analyze_data_ref_access): Alignment related checks moved to new
        functions that deal with alignment.
        (vect_analyze_data_refs): Likewise.
        (vect_analyze_loop): Call vect_analyze_data_refs_alignment.

2004-04-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-invariant.c (may_assign_reg_p): Prevent unused parameter
	warning.
	* tree-ssa-loop-manip.c (find_use_block, find_use_blocks,
	defined_inside_loop_p): Removed.
	(add_exit_phis_var, add_exit_phis, rewrite_into_loop_closed_ssa):
	Make more efficient.
	(find_uses_to_rename_use, find_uses_to_rename_stmt,
	find_uses_to_rename): New functions.

2004-04-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (compute_global_livein): Declare.
	* tree-into-ssa.c (struct def_blocks_d): New field
	phi_blocks.
	(compute_global_livein): Export.
	(set_def_block): Record phi_blocks.
	(get_def_blocks_for): Allocate phi_blocks.
	(mark_def_sites): Changed due to set_def_block change.
	(ssa_mark_def_sites_initialize_block, ssa_mark_def_sites):
	Make virtual defs be kills.
	(insert_phi_nodes_for): Handle old phi nodes more efficiently.
	(def_blocks_free): XFREE the bitmaps.
	* tree-ssa-loop-manip.c (add_exit_phis_use, add_exit_phis_stmt):
	Removed.
	(get_loops_exits): Return bitmap.
	(add_exit_phis_var, find_use_block, find_use_blocks,
	defined_inside_loop_p): New functions.
	(add_exit_phis): Use add_exit_phis_var.
	(rewrite_into_loop_closed_ssa): Reorganize.
	* tree-ssa-loop.c (pass_loop): Add garbage collection.

2004-04-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-chrec.c (chrec_convert): Handle extending correctly.
	* tree-scalar-evolution.c (set_scev_keep_symbolic): Removed.
	(set_scalar_evolution): Do not use it.
	(get_scalar_evolution): Only handle ssa names and constants.
	(interpret_loop_phi): When interpreting subloop, compute the
	evolution in outer loop afterwards.
	(analyze_scalar_evolution_in_loop): New.
	* tree-scalar-evolution.h (analyze_scalar_evolution_in_loop): Declare.
	* tree-ssa-loop-ivopts.c: Include tree-fold-const.h, tree-chrec.h
	and tree-scalar-evolution.h.
	(tree_ssa_iv_optimize_init): Call scev_initialize.
	(determine_biv_step, find_bivs, mark_bivs,
	find_givs_in_stmt): Use scev analyzer.
	(find_givs_in_stmt_scev): New function.
	(find_induction_variables): Remove TODO comment.
	(force_var_cost): Test for TREE_INVARIANT, not for
	is_gimple_min_invariant.
	(find_optimal_iv_set): Update comment.
	(tree_ssa_iv_optimize_finalize): Call scev_finalize.

2004-04-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa.c (raise_value): Removed.
	(get_eq_name, check_phi_redundancy): New.
	(kill_redundant_phi_nodes): Use standard algorithm.

2004-04-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-manip.c (allocate_new_names): Use duplicate_ssa_name.
	Preserve SSA_NAME_OCCURS_IN_ABNORMAL_PHI flag.

2004-04-10  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (lambda_loopnest_transform): Add comments.

2004-04-09  David Edelsohn  <edelsohn@gnu.org>

	Backport from mainline:
        * config/rs6000/t-linux64 (bispecs): Don't add -mlong-double-128 for
        32-bit builds when defaulting to 32-bit.

2004-04-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-iv.c (iv_number_of_iterations): Sign extend the constant value
	appropriately for the target mode.
	* tree-fold-const.c (tree_fold_gcd): Make more efficient.
	* tree-ssa-loop-manip.c (add_exit_phis_use): Do not add unnecessary
	phis.
	(rewrite_into_loop_closed_ssa): Fix comment.

2004-04-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgrtl.c (purge_dead_edges): Clean the EDGE_ABNORMAL_CALL flags.
	* loop-iv.c (iv_number_of_iterations): Handle the case when we prove
	that the loop does not roll.
	* opts.c (decode_options): Enable -floop-optimize2 and
	-ftree-loop-optimize by default.
	* tree-cfg.c (factored_computed_goto_label,
	factored_computed_goto): Removed.
	(factor_computed_gotos): Do not record them.
	(disband_implicit_edges): Do not unfactor computed jumps.
	* tree-ssa-loop-ivopts.c (force_gimple_operand): Give correct types
	to temporary variables.
	(idx_force_simple, create_iv, rewrite_use_nonlinear_expr,
	rewrite_use_address, rewrite_use_compare, rewrite_use_outer):
	Changed due to force_gimple_operand change.
	(find_bivs): Handle ill-typed assignments correctly.

2004-04-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* passes.c (rest_of_compilation): Enable rest_of_handle_loop2 by
	flag_loop_optimize2.
	* tree-scalar-evolution.c (scev_initialize): Find loop exits.

2004-04-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (rewrite_use_outer): Do not remove ssa names
	prematurely.

2004-04-01 Mostafa Hagog  <mustafa@il.ibm.com>
	   Dorit Naishlos <dorit@il.ibm.com>

        * config/rs6000/rs6000.md ("*ctrsi_internal1", "*ctrsi_internal2",
        "*ctrdi_internal1", "*ctrdi_internal2", "*ctrsi_internal3",
        "*ctrsi_internal4", "*ctrdi_internal3", "*ctrdi_internal4",
        "*ctrsi_internal5", "*ctrsi_internal6", "*ctrdi_internal5",
        "*ctrdi_internal6"): Replace register_operand with nonimmediate_operand

2004-03-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-into-ssa.c (ssa_rewrite_initialize_block): Update
	SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
	(ssa_rewrite_phi_arguments): Ditto.
	* tree-ssa.c (kill_redundant_phi_nodes): Prevent replacing
	ssa names that occur in abnormal phi nodes.
	* tree-ssa-loop-ivopts.c (get_var_def): Handle non-invariant
	non-ssa name operands.
	* java/decl.c (java_init_decl_processing): Initialize
	long_integer_type_node.

2004-03-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (idx_find_step): Prevent misscompilation
	in case the index overflows.

2004-03-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>,
	    Dorit Naishlos <DORIT@il.ibm.com>

	* tree-scalar-evolution.c (dump_chrecs_stats): Prevent format warning.

2004-03-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* lambda-code.c (gcc_loop_to_lambda_loop): Changed due to changes in
	scev.
	* tree-data-ref.c (analyze_array_indexes, analyze_array): Ditto.
	* tree-elim-check.c (try_eliminate_check): Ditto.
	* tree-vectorizer.c (vect_analyze_scalar_cycles): Ditto.
	* tree-chrec.c (chrec_fold_plus_1): Handle exponential + peeled chrec
	correctly.  Use correct types.
	(chrec_fold_negate): New.
	(chrec_merge):  Short-circuit the case when the merged values are
	identical.
	(no_evolution_in_loop_p): Handle chrec_top correctly.
	(chrec_convert): Handle polynomial and exponential chrecs corectly.
	(chrec_type): Use TREE_TYPE.
	* tree-chrec.h (chrec_fold_negate): Declare.
	* tree-phinodes.c (create_phi_node): Do not initialize PHI_MARKED.
	* tree-scalar-evolution.c: Handle evolutions analysed from different
	loops correctly.  Do not use PHI_MARKED.  Use correct types.
	* tree-scalar-evolution.h (analyze_scalar_evolution,
	instantiate_parameters): Declaration changed.
	(struct scev_info_str): Moved to tree-scalar-evolution.c.
	(MI_VAR, MI_INNER_LOOPS_CHREC, MI_OUTER_LOOPS_CHREC): Removed.
	(new_scev_info_str): Moved to tree-scalar-evolution.c.
	* tree-ssa-loop-manip.c (add_exit_phis_use): Just add exit phis for
	superloops of the loop containing the definition.
	* tree.h (PHI_MARKED): Removed.
	(tree_phi_node): Field 'marked' removed.

2004-03-30  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-chrec.c (chrec_contains_symbols): Factorize conditions,
	chrec_not_analyzed_yet is a NULL_TREE.
	* tree-chrec.h (prove_truth_value_{lt, le, ge, ne, gt, eq}.c):
	Removed.
	(evolution_function_is_multivariate,
	evolution_function_is_peeled_affine_p): New.
	* tree-data-ref.c (analyze_all_data_dependences): Dump some
	statistics on the data dependences.
	* tree-elim-check.c (not_code, prove_truth_value): New.
	(try_eliminate_check): Use prove_truth_value.
	* tree-fold-const.h (tree_is_ne): New.
	* tree-scalar-evolution.c (types_forbid_solutions_p,
	first_iteration_non_satisfying_noev_noev,
	first_iteration_non_satisfying_noev_ev,
	first_iteration_non_satisfying_ev_noev,
	first_iteration_non_satisfying_ev_ev,
	first_iteration_non_satisfying_1,
	first_iteration_non_satisfying,
	gather_stats_on_scev_database): New functions.
	(nb_iterations_less, nb_iterations_eq, nb_iterations_ne): Removed.
	(set_nb_iterations_in_loop): Be more careful on overflow.
	(number_of_iterations_in_loop): Use first_iteration_non_satisfying.
	* tree-scalar-evolution.h (first_iteration_non_satisfying,
	gather_stats_on_scev_database): Declared.

2004-03-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (iv_value): Use correct type.
	(may_eliminate_iv): Add a fixme comment.

2004-03-29  Devang Patel  <dpatel@apple.com>

	* tree-flow.h (tree_ssa_loop_version): Add new parameter, basic_block *.
	(update_lv_condition): New.
	* tree-ssa-loop-manip.c (copy_phi_nodes): nreverse copied phi nodes list
	to ensure that phi nodes remain in same order.
	(lv_update_pending_stmts): Do not nreverse pending list.
	(lv_adjust_loop_header_phi): Walk two phi nodes list in parallel.
	(tree_ssa_loop_version): Now condition_bb is input parameter.
	(update_lv_condition): New.
	(test_loop_versioning): Use update_lv_condition.
	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update function
	tree_ssa_loop_version () call by adding 4th parameter.

2004-03-29  Richard Guenther <rguenth@tat.physik.uni-tuebingen.de>

	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Fix unused vars warning with -disable-checking.
	* df.c (df_reg_def_chain_create, df_reg_use_chain_create): Ditto.

2004-03-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags.
	* tree-flow-inline.h (bsi_after_labels): New.
	* tree-flow.h (struct ssa_name_ann_d): Add need_phi_state field.
	(bsi_after_labels, rewrite_ssa_into_ssa, duplicate_ssa_name,
	tree_ssa_dce_no_cfg_changes, rewrite_into_loop_closed_ssa,
	verify_loop_closed_ssa, compute_phi_arg_on_exit): Declare.
	(tree_loop_optimizer_init): Declaration changed.
	* tree-into-ssa.c (struct mark_def_sites_global_data): Add
	names_to_rename and ssa_names fields.
	(insert_phi_nodes, get_value_for, set_value_for, set_def_block,
	set_livein_block, insert_phi_nodes_1, insert_phi_nodes_for,
	register_new_def, get_reaching_def, rewrite_into_ssa): Handle
	rewriting of ssa names.
	(get_phi_state, set_phi_state, ssa_mark_def_sites_initialize_block,
	ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name,
	ssa_rewrite_initialize_block, ssa_rewrite_phi_arguments,
	ssa_rewrite_finalize_block, ssa_rewrite_stmt, rewrite_ssa_into_ssa):
	New functions.
	* tree-scalar-evolution.c (scev_initialize): Changed due to
	tree_loop_optimizer_init change.
	* tree-ssa-dce.c (perform_tree_ssa_dce, perform_tree_ssa_dce,
	tree_ssa_cd_dce): Handle no cfg changes mode.
	(tree_ssa_dce_no_cfg_changes): Resurrect.
	* tree-ssa-loop-im.c (move_computations): Preserve loop closed ssa.
	* tree-ssa-loop-ivopts.c (struct version_info): Field outermost_usage
	removed.
	(update_outermost_usage, find_outermost_usage): Removed.
	(ip_normal_pos): Fix.
	(tree_ssa_iv_optimize_init): Do not call find_outermost_usage.
	(find_interesting_uses_stmt): Use loop closed ssa form.
	(find_interesting_uses_outside): New.
	(find_interesting_uses): Use it.
	(determine_iv_cost): Prefer IP_NORMAL to IP_END.
	(split_loop_exit_edge, protect_loop_closed_ssa_form_use,
	protect_loop_closed_ssa_form, compute_phi_arg_on_exit): New functions.
	(rewrite_use_outer): Preserve loop closed ssa form.
	(tree_ssa_iv_optimize): Verify loop closed ssa form.
	* tree-ssa-loop-manip.c (mfb_redirect_exit_edges): Removed.
	(free_new_names): Free old ssa names.
	(extend_exit_phi_nodes, add_exit_phis_edge,
	add_exit_phis_use, add_exit_phis_stmt, add_exit_phis,
	get_loops_exits, rewrite_into_loop_closed_ssa,
	check_loop_closed_ssa_use, check_loop_closed_ssa_stmt,
	verify_loop_closed_ssa): New functions.
	(tree_duplicate_loop_to_header_edge): Use loop closed ssa form.
	(tree_ssa_loop_version): Handle irreducible loops correctly.
	* tree-ssa-loop.c (tree_loop_optimizer_init): Create loop closed ssa
	form.
	(tree_ssa_loop_opt, copy_loop_headers): Changed due to
	tree_loop_optimizer_init change.

2004-03-25  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-data-ref.c (subscript_dependence_tester): Removed.
	(build_classic_dist_vector): Implement the subscript tester:
	test for different distances carried by the same loop.

2004-03-23  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-cfg.c (print_loop): Modify dump formatting.
	(debug_loop_ir): Renamed tree_debug_loops.
	(tree_debug_loop): New.
	* tree-chrec.c: Restructure for handling more carefully types.
	* tree-chre.h: Same.
	* tree-fold-const.h: Same.
	* tree-fold-const.c: Same.
	* tree-scalar-evolution.c: Same.
	* tree-scalar-evolution.h: Same.
	* tree-data-ref.c (dump_data_dependence_relation): Remove the
	dump of the base_name because it produces too many conflicts in
	the diffs of the testsuite.
	(compute_all_dependences): Use pointers to the dependence_relations varray.
	(int_cst_value, build_classic_dist_vector): New.
	(find_data_references): Use pointers to datarefs varray.
	(analyze_all_data_dependences): Compute the classic distances.
	* tree-data-ref.h: Declare functions.
	* tree-dg.c (dg_create_graph): Update the uses of the data-ref functions.
	* tree-flow.h (debug_loop_ir): Renamed to tree_debug_loops.
	(tree_debug_loop): Declare.

2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (tree_ssa_dce_no_cfg_changes): Declaration removed.
	* tree-ssa-dce.c (remove_dead_stmt): Invalidate dominators if we
	thread the edge.
	(tree_ssa_dce_no_cfg_changes): Removed.
	(perform_tree_ssa_dce, tree_ssa_dce, perform_tree_ssa_dce): Remove
	no cfg changes mode.
	* tree-ssa-loop-ivopts.c (force_gimple_operand): Handle overflowed
	constants.
	(find_interesting_uses_outer_or_nonlin): New.
	(find_interesting_uses_op, find_interesting_uses_outer): Use it.
	(find_interesting_uses_cond, idx_record_use,
	find_interesting_uses_stmt): Changed due to find_interesting_uses_op
	change.
	(create_new_iv, remove_statement, rewrite_use_nonlinear_expr,
	rewrite_use_outer, tree_ssa_iv_optimize): Handle direct removal of
	unused ivs.
	(remove_unused_ivs): New.
	(tree_ssa_iv_optimize_loop): Call it.

2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (SCEV_H): New.
	(tree-ssa-loop-ivcanon.o, tree-ssa-loop-ivopts.o,
	tree-scalar-evolution.o, tree-data-ref.o, tree-dg.o,
	tree-elim-check.o, tree-vectorizer.o, tree-loop-linear.o,
	lambda-code.o): Use it.
	* tree-chrec.h (build_interval_chrec, build_polynomial_chrec,
	build_exponential_chrec, build_peeled_chrec): Give a type to the
	chrec node.
	* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Preserve correct
	type.
	(analyze_evolution_in_loop): Fix test for edges from inside the loop.
	(scev_initialize): New.
	(scev_init): Use it.
	(scev_finalize): New.
	(scev_done): Use it.
	* tree-flow-inline.h (loop_of_stmt): Handle initialization statements
	without crash.
	* tree-scalar-evolution.h (scev_initialize, scev_finalize): Declare.

2004-03-23  Dorit Naishlos  <dorit@il.ibm.com>

        * tree-vectorizer.c: (vect_align_data_ref): Check for DECL_ALIGN
        instead of TYPE_ALIGN. Check for DECL_EXTERNAL.
        (vect_analyze_data_refs): Check for DECL_EXTERNAL.

        Add documentation for functions.

2004-03-22  Dale Johannesen  <dalej@apple.com>

	* Makefile.in (OBJS-common):  Remove duplicate loop-iv.o.

2004-03-22  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c: Avoid usage of global variables.

2004-03-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-unswitch.o: New file.
	* Makefile.in (tree-ssa-loop-unswitch.o): Add.
	(tree-ssa-loop-im.o): Add flags.h dependency.
	* flags.h (flag_unswitch_loops): Declaration moved from ...
	* toplev.h (flag_unswitch_loops): ... here.
	* tree-flow.h (tree_ssa_loop_version): Declaration changed.
	(tree_ssa_unswitch_loops, estimate_loop_size): Declare.
	* tree-ssa-loop-im.c: Include flags.h.
	(movement_possibility, stmt_cost, move_computations_stmt):
	Handle unswitchable conditions.
	* tree-ssa-loop-ivcanon.c (estimate_loop_size): Export.
	* tree-ssa-loop-ivopts.c (find_interesting_uses_cond): Handle
	if (0) and if (1).
	* tree-ssa-loop-manip.c (tree_ssa_loop_version): Return the newly
	created loop.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_unswitch_loops.

2004-03-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from tree-ssa branch (lno-merge-20040321).

2004-03-20  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c: (vect_init_vector): New function.
        (vect_get_vec_def_for_operand): Support loop invariant uses.
        (vect_is_simple_use): Likewise.
        (vect_mark_stmts_to_be_vectorized): Likewise.
        (vect_analyze_scalar_cycles): Redundant check removed.

        (vect_analyze_operations): Don't fail for vdefs that have uses
        outside the loop.

        (vect_stmt_relevant_p): A call to get_stmt_operands removed (already
        performed at new_loop_vec_info).
        (vect_mark_stmts_to_be_vectorized): Likewise.

        (need_imm_uses_for): New Function.
        (vectorize_loops): Add call to compute_immediate_uses and free_df.

2004-03-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-chrec.c (chrec_fold_multiply_ival_cst): Handle negative
	constants correctly.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Enable use of scev.

2004-03-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/14658
	* loop-invariant.c (move_invariant_reg): Handle assignments
	with nontrivial lhs correctly.

2004-03-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* df.c (df_reg_def_chain_create, df_reg_use_chain_create): Do not clean
	up the old information here.
	(df_reg_def_chain_clean, df_reg_use_chain_clean): New.
	(df_analyse_subcfg): Call them.

2003-03-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (loop_commit_inserts): Declare.
	* tree-ssa-loop-im.c (commit_inserts): Rename to...
	(loop_commit_inserts): ... this.
	* move_computations (move_computations, determine_lsm): Use
	loop_commit_inserts.
	* tree-ssa-loop-ivopts.c (AVG_LOOP_NITER): New macro.
	(struct iv): New field use_id.
	(struct version_info): New field preserve_biv.
	(alloc_iv, record_use, free_loop_data): Initialize new fields.
	(enum use_type): Add USE_OUTER.
	(dump_use, find_interesting_uses_op, add_derived_ivs_candidates,
	determine_use_iv_cost, rewrite_use): Handle USE_OUTER.
	(dump_cand, find_interesting_uses_stmt, add_candidate_1,
	determine_use_iv_cost_condition, determine_iv_cost, set_cost,
	create_new_iv, rewrite_use_nonlinear_expr): Handle final value
	replacement.
	(find_interesting_uses_outer, add_iv_outer_candidates,
	may_replace_final_value, determine_use_iv_cost_outer,
	remove_statement, rewrite_use_outer): New functions.
	(var_at_use): Replaced by ...
	(var_at_stmt): ... this.
	(get_computation_at): Split from ...
	(get_computation): ... here.
	(get_computation_cost_at): Split from ...
	(get_computation_cost): ... here.
	(iv_value): Split from ...
	(cand_value_at): ... here.
	(may_eliminate_iv, rewrite_use_compare): Reflect these changes.
	(tree_ssa_iv_optimize_loop): Call loop_commit_inserts.
	* tree-ssanames.c (make_ssa_name): Handle NULL argument.

2003-03-18  Devang Patel  <dpatel@apple.com>

	* tree-ssa-live.c (new_tree_live_info): Set num_blocks to
	last_basic_block instead of n_basic_blocks.
	(calculate_live_on_entry): Use last_basic_block instead of
	n_basic_blocks.
	(calculate_live_on_exit): Same.

2004-03-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (thread_jumps): Don't thread jumps over loop headers.
	* tree-flow.h (rewrite_into_ssa): Declaration changed.
	(kill_redundant_phi_nodes, tree_loop_optimizer_init): Declare.
	* tree-optimize.c (execute_todo): Do not free vars_to_rename.
	(execute_one_pass): Do not allocate vars_to_rename.
	(tree_rest_of_compilation): Allocate vars_to_rename.
	* tree-scalar-evolution.c (number_of_iterations_in_loop): Handle
	loops exited when condition is true.
	(initialize_scalar_evolutions_analyzer): Use tree_loop_optimizer_init.
	* tree-ssa-chrec.c (how_far_to_positive): Handle chrec_top correctly.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Changed due to
	rewrite_into_ssa change.
	* tree-ssa-loop-im.c (move_computations, determine_lsm): Ditto.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
	Use scev analyser.
	* tree-ssa-loop-manip.c (allocate_new_names): Update name memory
	tags.
	* tree-ssa-loop.c (tree_loop_optimizer_init): New.
	(tree_ssa_loop_opt, copy_loop_headers): Use it.
	* tree-ssa.c (rewrite_into_ssa): Use argument to decide whether
	to rename all variables.
	(rewrite_all_into_ssa): New.
	(pass_build_ssa): Use it.
	(kill_redundant_phi_nodes): Export.

2004-03-15  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-return.c (tree_ssa_return):
	Move check for NULL return value above check
	for a modify expr.

2004-03-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (gate_scev_iv_canon): Do not check rtl
	level flags here.
	* tree-ssa-loop-ivcanon.c (get_base_for): Verfify that the argument
	of the phi node is a constant.
	(loop_niter_by_eval, create_canonical_iv, try_unroll_loop_completely,
	canonicalize_loop_induction_variables): Handle loops with more than
	one exit.
	(find_loop_niter_by_eval): New.
	(canonicalize_induction_variables): Check rtl level flags here.

2004-03-12  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-return.c (tree_ssa_return):
	Only do it when we have a modify expr.

	* tree-ssa-return.c (tree_ssa_return):
	Add new comments and fix some old ones.

2004-03-12  Falk Hueffner  <falk@debian.org>

	* tree-pass.h: Declare pass_return.

2004-03-11  Andrew Pinski  <apinski@apple.com>

	PR optimization/14135
	* tree-ssa-return.c: New file.
	* Makefile.in (tree-ssa-return.o): Add.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_return.
	* timevar.def (TV_TREE_RETURN): New.

2004-03-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivcanon.o: New file.
	* Makefile.in (tree-ssa-loop-ivcanon.o): Add.
	* flags.h (flag_unroll_loops): Declare.
	* loop-invariant.c (record_use): Fix.
	* params.def (PARAM_MAX_COMPLETELY_PEELED_INSNS): Increment.
	* timevar.def (TV_TREE_LOOP_IVCANON): New.
	* toplev.h (flag_unroll_loops): Declaration moved to flags.h.
	* tree-flow.h (enum tree_ann_type): Remove MISC_ANN.
	(struct tree_ann_common_d): Add aux field.
	(struct misc_ann_d): Removed.
	(struct stmt_ann_d): Removed aux field.
	(union tree_ann_d): Removed misc field.
	(canonicalize_induction_variables): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_scev_iv_canon.
	* tree-pass.h (pass_scev_iv_canon): Declare.
	* tree-scalar-evolution.c (scev_iv_canon, gate_scev_iv_canon,
	pass_scev_iv_canon): New.
	(scev_done): Run cfg cleanup.
	* tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
	move_computations_stmt, schedule_sm): Use aux field in common
	part of annotations.
	* tree-ssa-loop-manip.c (allocate_new_names, rename_op,
	free_new_names): Use common aux field.
	(tree_duplicate_loop_to_header_edge): Fix memory leak.
	* tree-ssa.c (mark_def_sites): Fix.
	* tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Use aux field in
	common part of annotations.
	* gcc.dg/tree-ssa/ivcanon-1.c: New test.

2004-03-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (lambda-mat.o, lambda-trans.o, lambda-code.o): Add TM_H
	dependency.

2004-03-09  Olga Golovonevsky <olga@il.ibm.com>
            Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c: (vect_transform_binop): Removed.
        (vect_transform_op): New function instead of vect_transform_binop,
        to support both unary and binary operations.
        (vect_is_supportable_binop): Removed.
        (vect_is_supportable_op): New function instead of
        vect_is_supportable_binop to support additional codes.
        * tree-vectorizer.h: (operation_type): New enum type declared.
        * config/rs6000/altivec.md: (andvv16qi3, andv8hi3, one_cmplv16qi2,
        one_cmplv8hi2, one_cmplv4si2, iorv16qi3, iorv8hi3,): New modelling.
        (*movv4si_internal): Relax condition.
        (*movv8hi_internal1): Likewise.
        (*movv16qi_internal1): Likewise.
        (*movv4sf_internal1): Likewise.

2004-03-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (df.o): Remove FIBHEAP_H dependency.
	(invariant.o): Add df.h dependency.
	* df.c: Do not include fibheap.h.
	(df_bb_table_realloc, df_analyse_subcfg, free_reg_ref_chain,
	prune_to_subcfg, df_bb_modify, df_find_def, dataflow_set_a_op_b,
	dataflow_set_copy): New functions.
	(df_bitmaps_alloc, df_reg_def_chain_create, df_reg_use_chain_create,
	df_refs_update, df_reg_table_realloc, df_ref_create,
	df_bb_reg_def_chain_create, df_bb_reg_use_chain_create,
	df_bb_rd_local_compute, df_bb_ru_local_compute, df_bb_lr_local_compute,
	df_analyse_1, df_insn_modify): Support analysing only a part of the cfg.
	(df_rd_transfer_function, df_ru_transfer_function,
	df_lr_transfer_function): Type of bitmaps changed to void *.
	(hybrid_search_bitmap, hybrid_search_sbitmap): Merge into ...
	(hybrid_search): ... new function.
	(iterative_dataflow_bitmap, iterative_dataflow_sbitmap): Merge into ...
	(iterative_dataflow): ... new function. Avoid use of fibheaps for
	a worklist.  Do not process basic blocks unnecessarily.
	* df.h (struct ref): Add data field.
	(DF_REF_DATA): New macro.
	(df_analyse_subcfg, df_find_def): Declare.
	(transfer_function_sbitmap, transfer_function_bitmap): Replaced by ...
	(transfer_function): ... declare.
	(iterative_dataflow_sbitmap, iterative_dataflow_bitmap): Replaced by ...
	(iterative_dataflow): ... declare.
	(enum set_representation, struct dataflow): New.
	* loop-invariant.c: Include df.h.
	(struct loop_data): Remove modified_regs field.
	(struct def): Remove redundant fields.
	(struct use): Add insn field.
	(defs, adef, last_def, m_reg_info, reg_info): Removed.
	(struct reg): Removed.
	(record_def, note_insn_stores, find_defs_insn, find_defs_bb,
	get_current_def, record_dependencies_fer, record_dependencies,
	move_actual_defs): Removed.
	(find_defs, find_invariants_insn, create_new_invariant,
	find_invariants_bb, find_invariants_body, find_invariants,
	find_invariants_to_move, move_invariant_reg,
	move_invariants, move_single_loop_invariants,
	move_loop_invariants): Use df.c.
	(init_inv_motion_data): Do not initialize removed structures.
	(free_inv_motion_data, free_loop_data): Do not cleanup removed
	structures.
	(check_dependencies, find_invariant_insn, record_uses): New.
	(record_use): Record the insn.
	(get_inv_cost): Update comments.

2004-03-09  Andreas Jaeger  <aj@suse.de>

	* common.opt: Put tree-loop-linear at right place.

2004-03-09  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in: Add lambda-mat.o, lambda-code.o, and tree-loop-linear.o.
	* common.opt: Add -ftree-loop-linear.
	* flags.h: Add flag_tree_loop_linear.
	* opts.c: Handle tree-loop-linear option.
	* timevar.def (TV_TREE_LINEAR_TRANSFORM): New.
	* tree-flow.h (linear_transform_loops): New prototype.
	* tree-optimize.c (pass_scev_linear_transform): New.
	* tree-pass.h (pass_scev_linear_transform): Ditto.
	* tree-scalar-evolution.c (scev_linear_transform): Ditto.
	(gate_scev): Add check for flag_tree_loop_linear.
	(gate_scev_linear_transform): New.
	* lambda-code.c: New file.
	* lambda-mat.c: New file.
	* lambda-trans.c: New file.
	* lambda.h: New file.
	* tree-loop-linear.c: New file.

2004-03-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-phiopt.c (conditional_replacement):
	Initialize new_var to NULL to prevent the
	uninitialized warning.

	* tree-ssa-phiopt.c (conditional_replacement):
	Disable the making a new variable for different
	types.

	* tree-ssa-phiopt.c (conditional_replacement):
	Disable the use of non-gimple of invert_truthvalue.

2004-03-08  Andrew Pinski  <apinski@apple.com>

	* tree-ssa-phiopt.c (make_temp): New function.
	(tree_ssa_phiopt): Use absolute_replacement
	and value_replacement.
	(conditional_replacement): Handle the case
	the conditional is not a variable and
	the types do not match.
	Handle the case where invert_truthvalue
	would create non-gimple.
	(absolute_replacement): New function.
	(value_replacement): New function.

2004-03-08  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* tree-scalar-evolution.c (set_scalar_evolution,
	set_scalar_evolution_outer_value): Compute the loop number
	instead of passing it as a parameter.

2004-03-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-live.c (coalesce_tpa_members): Update the root
	variable of the partition.

2004-03-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (enum iv_position): Add IP_ORIGINAL.
	(struct iv_cand): Add incremented_at.
	(dump_cand, add_candidate_1, add_candidate, add_old_iv_candidates,
	var_at_use, get_computation, get_computation_cost,
	cand_value_at, determine_iv_cost, find_best_candidate,
	create_new_iv): Handle IP_ORIGINAL.
	(stmt_after_ip_original_pos, stmt_after_increment): New functions.
	(find_givs_in_stmt): Cast the values to the result type.
	(record_invariant): Do not record virtual operands.

2004-03-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-scalar-evolution.c: Use pointers to varray instead of
	varrays for functions that insert in the scev database.

2004-03-03  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* Makefile.in (OBJS-common): Add tree-elim-check.o.
	(tree-chrec.o): Add dependence on tree-pass.h.
	(tree-elim-check.o): New rule.
	* tree-elim-check.c: New file.
	* basic-block.h (edge_source, edge_destination): New inlined
	functions.
	* cfgloop.h (loop_nb_iterations): Added a comment on the use
	of this accessor.
	* common.opt (ftree-elim-checks): New flag.
	* flags.h (flag_tree_elim_checks): Declared here.
	* opts.c (decode_options): Set flag_tree_elim_checks to zero.
	(common_handle_option): Add case OPT_ftree_elim_checks.
	* timevar.def (TV_TREE_ELIM_CHECKS): Defined.
	* toplev.c (flag_tree_elim_checks): Defined.
	* tree-cfg.c (print_pred_bbs, print_succ_bbs, print_loop):
	Modify the dumping style.  Print nb_iterations.
	* tree-chrec.c, tree-chrec.h, tree-scalar-evolution.c,
	tree-scalar-evolution.h, tree-data-ref.c: New version of the
	scalar evolution algorithm.  Don't use a schedule for
	analyzing the scalar variables.
	* tree-fold-const.c (tree_fold_bezout): Define.
	* tree-fold-const.h (tree_fold_int_round_div,
	tree_fold_int_trunc_mod, tree_fold_int_ceil_mod,
	tree_fold_int_floor_mod, tree_fold_int_round_mod): Removed, because
	not used for the moment.
	(chrec_merge_types): New function.
	* tree-optimize.c (pass_scev_elim_checks): Register the pass.
	* tree-pass.h (pass_scev_elim_checks): Declare the pass.
	* tree-pretty-print.c (dump_generic_node): Print
	PEELED_CHREC.  Remove PERIODIC_CHREC.
	* tree-vectorizer.c: Modify the use of
	analyze_scalar_evolution.
	* tree.def (POLYNOMIAL_CHREC, EXPONENTIAL_CHREC): Store the
	evolution loop in a third leaf instead of in TREE_TYPE.
	TREE_TYPE is then used in storing the type of the chrec.
	(PERIODIC_CHREC): Removed since it is not used for the moment.
	(PEELED_CHREC): New node.
	* doc/invoke.texi (fdump-tree-scev, fdump-tree-ddall): Correct
	the name of these flags.
	(ftree-elim-checks, fdump-tree-elck): Document.

2004-03-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (number_of_iterations_cond, cand_value_at):
	Cast the constants.

2004-03-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop-ivopts.o): Add HASHTAB_H dependency.
	* tree-ssa-loop-ivopts.c: Include hashtab.h.
	(old_highest_ssa_version): Rename to version_info_size.
	(struct tree_niter_desc): Split from ...
	(struct loop_data): ... here.
	(relevant): New variable.
	(tree_ssa_iv_optimize_init, set_iv, find_induction_variables,
	record_invariant, find_interesting_uses, add_old_ivs_candidates,
	determine_set_costs, free_loop_data, tree_ssa_iv_optimize_finalize):
	Use bitmap of relevant ssa names.
	(var_at_use): New function.
	(get_computation): Use it.
	(multiply_by_cost): Cache all results.
	(mbc_entry_hash, mbc_entry_eq): New functions.
	(number_of_iterations_cond): Split from ...
	(determine_number_of_iterations): ... here.
	(cand_value_at, may_eliminate_iv): New functions.
	(determine_use_iv_cost_condition, rewrite_use_compare): Implement iv
	elimination.

2004-03-01  Devang Patel  <dpatel@apple.com>

	* tree-dg.c (dg_delete_graph): Reset varrays.
	(gate_ddg) : Check current loops.

2004-02-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (cleanup_control_expr_graph): Prevent probability from
	overflowing.
	* loop-invariant.c (get_current_def): Fix.
	* tree-ssa-loop-im.c (move_computations): Only call rewrite_into_ssa
	if vars_to_rename is nonempty.
	* tree-ssa-loop-ivopts.c (outermost_usage, ivs): Removed.
	(struct version_info): New.
	(version_info, max_inv_id): New variables.
	(struct cost_pair): Added depends_on field.
	(struct iv_use): Removed fields choices, n_choices, min_cost and
	min_cost_cand.
	(enum iv_position, dump_cand, ip_end_pos, add_candidate_1,
	determine_iv_cost, create_new_iv): IP_START position disabled.
	(find_optimal_iv_set_1, min_remaining_cost, undo_changes,
	execute_removal, add_forbidden_ivs, try_candidate): Removed.
	(dump_use): Do not dump removed fields.
	(ver_info, name_info, update_outermost_usage, record_invariant,
	find_invariants_stmt, find_depends, try_improve_iv_set): New functions.
	(find_outermost_usage): Handle uses in phis.
	(divide): Update comment.
	(tree_ssa_iv_optimize_init): Initialize version_info instead of ivs
	and outermost_usage.
	(set_iv, get_iv, find_induction_variables, add_old_ivs_candidates):
	Use version_info instead of ivs.
	(record_use): Do not initialize removed fields.
	(find_interesting_uses_op): Call record_use.
	(find_interesting_uses_stmt): Call find_invariants_stmt.
	(find_interesting_uses): Scan just the current loop.
	(set_use_iv_cost): Initialize depends_on field.
	(get_use_iv_cost): Return depends_on field.
	(get_computation): Handle special cases.
	(force_var_cost, split_address_cost, ptr_difference_cost,
	difference_cost, get_computation_cost, determine_use_iv_cost_generic,
	determine_use_iv_cost_address, determine_use_iv_cost_condition):
	Determine depends_on bitmap.
	(determine_use_iv_costs): Dump depends_on bitmap.
	(init_set_costs): Use information about invariants.
	(find_best_candidate, set_cost, get_initial_solution,
	find_optimal_iv_set): Take depends_on into account.
	(rewrite_uses): Use use->selected to select candidate.
	(free_loop_data, tree_ssa_iv_optimize_finalize): Cleanup version_info
	instead of ivs.  Free depends_on bitmaps.
	(tree_ssa_iv_optimize_loop): Do not pass iv_set to rewrite_uses.

2004-02-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopmanip.c (loopify): Fix comment.
	* loop-iv.c (lowpart_byte, lowpart_subreg_p): Removed.
	(lowpart_subreg, simple_reg_p, iv_get_reaching_def, get_biv_step_1,
	iv_analyse_op, iv_analyse, get_iv_value): Use standard subreg
	manipulation functions.
	(simplify_using_assignment): Handle hardregs correctly.
	(canon_condition): Use swap_commutative_operands_p.
	(iv_number_of_iterations): Avoid overflow.
	* loop-unroll.c (unroll_loop_runtime_iterations): Pass additional
	argument to compare_and_jump_seq.
	* loop-unswitch.c (unswitch_loop, may_unswitch_on,
	unswitch_single_loop, compare_and_jump_seq): Handle comparisons of
	ccmode registers.
	* rtl.h (compare_and_jump_seq): Declaration changed.

2004-02-25  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.h (assignment_vec_info_type): New enum value for
        stmt_vec_info_type.
        * tree-vectorizer.c (vect_transform_assignment): New function.
        Support vectorization of assignment stmts.
        (vect_transform_stmt): Call vect_transform_assignment.
        (vect_is_supportable_assignment): New function.
        (vect_analyze_operations): Call vect_is_supportable_assignment.

        (vect_create_index_for_array_ref): Replace unsigned_intSI_type_node
        with size_type_node.
        (vect_transform_loop_bound): Likewise.

        (get_vectype_for_scalar_type): Avoid division by 0.

        (vect_analyze_operations): Apply check for no-out-of-loop-uses also
        to stmts that are marked irrelevant.

2004-02-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (for_each_index): Declare.
	* tree-ssa-loop-im.c (struct lim_aux_data): Add always_executed_in
	and sm_done fields.
	(struct use): New.
	(max_uid): New static variable.
	(outermost_invariant_loop, commit_inserts, may_move_till,
	force_move_till, record_use, free_uses, single_reachable_address,
	rewrite_uses, schedule_sm, determine_lsm_reg,
	loop_suitable_for_sm, determine_lsm_loop, determine_lsm): New functions.
	(add_dependency): Use outermost_invariant_loop.
	(set_level): Add sanity checking.
	(determine_invariantness_stmt): Set always_executed_in field.
	(move_computations_stmt): Modified.
	(move_computations): Use commit_inserts.
	(fill_always_executed_in): Take possibility of an infinite loop into
	account.
	(tree_ssa_lim): Call determine_lsm.
	* tree-ssa-loop-ivopts.c (for_each_index): Export.
	(rewrite_use_address): Improve handling of memory tags.

	* tree-ssa-loop.c (do_while_loop_p): Readd.
	(copy_loop_headers): Readd check for do_while_loop_p.
	* tree-ssa-operands.c (add_stmt_operand): Modified.

2004-02-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from tree-ssa branch (lno-merge-20040221).

2004-02-20  Devang Patel  <dpatel@apple.com>

	* tree-vectorizer.c (vect_analyze_data_ref_dependence): Use
        ddg_direction_between_stmts ().

2004-02-20  Devang Patel  <dpatel@apple.com>

	* tree-data-ref.h (data_dependence_direction): Add new member
	dir_independent.
        * tree-dg.h (tree-data-ref.h): Include.
        (ddg_direction_between_stmts, ddg_distance_between_stmts): New decls.
        * tree-dg.c (find_ddr_between_stmts, ddg_direction_between_stmts,
        ddg_distance_between_stmts): New functions.

2004-02-19  Devang Patel  <dpatel@apple.com>

	* tree-dg.c (dg_delete_edges, dg_delete_node, dg_delete_graph,
	dg_delete_edge, gate_delete_ddg): New functions.
	(pass_delete_ddg): New.
	* tree-dg.h (dg_delete_graph, dg_delete_edge): New extern decls.
	* tree-optimize.c (init_tree_optimization_passes): Add new pass
	pass_delete_ddg.
	* tree-pass.h (pass_delete_ddg): New extern.

2004-02-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (create_iv): Declare.
	* tree-ssa-loop-ivopts.c (create_iv): New function.
	(create_new_iv): Use create_iv.

2004-02-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop.c (do_while_loop_p): New function.
	(copy_loop_headers): Do not peel do-while loops.

2004-02-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-invariant.c: New file.
	* Makefile.in (loop-invariant.o): New.
	* cfgloop.h (init_set_costs, global_cost_for_size,
	move_loop_invariants): Declare.
	* toplev.c (rest_of_handle_loop2): Call move_loop_invariants.
	(lang_dependent_init): Call init_set_costs.
	* tree-ssa-loop-ivopts.c (avail_regs, res_regs, small_cost, pres_cost,
	spill_cost): Made static.
	(global_cost_for_size): Export.
	(ivopts_global_cost_for_size, init_set_costs): New functions.
	(determine_set_costs): Do not initialize set cost constants.
	Use ivopts_global_cost_for_size.
	(try_candidate, find_optimal_iv_set_1, set_cost): Use
	ivopts_global_cost_for_size.

	* cfgloop.c (fill_sons_in_loop): Fix typo in comment.

2004-02-17  Devang Patel  <dpatel@apple.com>

	* tree-vectorize.c (vect_create_data_ref): Set TREE_ADDRESSABLE bit.
	(vectorize_loops): Reset loop->aux.

2004-02-16  Devang Patel  <dpatel@apple.com>

        * Makefile.in (TREE_FLOW_H): Add tree-dg.h
        (OBJS-common): Add tree-dg.o
        (gtype-desc.o): Depend on tree-dg.h
        (tree-dg.o): New rule.
        (GTFILES): Add tree-data-ref.h, tree-data-ref.h
        * common.opt (ftree-ddg): Add new option.
        * flags.h (flag_ddg): New extern.
        * gengtype.c (open_base_files): Add tree-dg.h and tree-data-ref.h in
        the list.
        * opts.c (decode_option): Set flag_ddg to zero.
        (common_handle_option): Handle OPT_ftree_ddg.
        * timevar.def (TV_DEP_GRAPH): New.
        * toplev.c (flag_ddg): New flag.
        (lang_independent_options): Add entry for -ftree-ddg.
        * tree-data-ref.c (compute_all_dependences): Make externally visible.
        * tree-data-ref.h (data_reference, subscript, data_dependence_relation)
        Add GTY markers.
        (compute_all_dependences): Make externally visible.
        * tree-dg.c: New file.
        * tree-dg.h: New file.
        * tree-flow-inline.h (dg_node_for_stmt): New function.
        * tree-flow.h (tree-dg.h): Include.
        (stmt_ann_d): New member, dg_node.
        * tree-optimize.c (init_tree_optimization_passes): Add pass_ddg.
        * tree-pass.h (PROP_scev): Define.
        (tree_opt_pass pass_ddg): Extern decl.
        * tree-scalar-evolution.c (pass_scev_anal): Provide PROP_scev property.
        * varray.c (element[NUM_VARRAY_DATA]): Add new member for dependence
        graph.
        * varray.h (varray_data_enum): New member VARRAY_DATA_DG.
        (varray_data_tag): New member dg.
        (VARRAY_DG_INIT): New #define.
        (VARRAY_DG): New #define.
        (VARRAY_PUSH_DG): New #define.

2004-02-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-optimize.c (init_tree_optimization_passes): Move ch after
	the first dominator optimization pass.
	* tree-ssa-loop.c (should_duplicate_loop_header_p,
	copy_loop_headers): Work over ssa.
	(pass_ch): Require and update ssa form.
	(mark_defs_for_rewrite, duplicate_blocks): New.

2004-02-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (for_each_index, prepare_decl_rtl,
	peel_address): Handle RESULT_DECL.

2004-02-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-doloop.c (doloop_optimize): Use get_simple_loop_desc.
	* loop-init.c (loop_optimizer_finalize): Free the simple loop
	descriptions.
	* loop-unroll.c (unroll_and_peel_loops): Do not free the simple loop
	descriptions.
	(decide_peel_once_rolling, decide_peel_completely,
	decide_unroll_stupid): Test assumptions.
	decide_unroll_constant_iterations, decide_unroll_runtime_iterations,
	decide_peel_simple, peel_loop_simple, unroll_loop_stupid): Update
	number of iterations info.
	(unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
	(loop_exit_at_end_p): Use get_simple_loop_desc.

2004-02-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.h (struct niter_desc): Add first_special, extend,
	extend_mode, delta and mult fields.
	(get_iv_value): Declare.
	* expr.c (force_operand): Handle subregs of expressions.
	* loop-doloop.c (doloop_valid_p): Test desc->infinite properly.
	* loop-iv.c (dump_iv_info): Dump new fields.
	(lowpart_byte, lowpart_subreg_p, lowpart_subreg,
	iv_constant, iv_subreg, iv_extend, iv_neg, iv_add, iv_mult,
	get_biv_step_1, get_biv_step, shorten_into_mode,
	canonicalize_iv_subregs): New functions.
	(simple_reg_p, simple_set_p, iv_get_reaching_def, iv_analyse_biv,
	iv_analyse_op, iv_analyse, iv_number_of_iterations): Handle subregs.
	* loop-unswitch.c (may_unswitch_on): Handle subregs.

2004-02-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop-ivopts.o): Add RECOG_H and insn-config.h
	dependency.
	* loop-iv.c (iv_analysis_loop_init): Ensure we only care about
	increments that are done just once each iteration.
	* timevar.def (TV_TREE_LOOP_IVOPTS, TV_TREE_CH): New.
	* tree-ssa-loop-ivopts.c: Include insn-config.h and recog.h.
	(INFTY): Increase.
	(struct iv_use): Add choices, n_choices, min_cost_cand and selected
	fields.  Rename field best_cost to min_cost.
	(CONSIDER_ALL_CANDIDATES_BOUND): Decrease.
	(dump_use): Dump new fields.
	(dump_uses, cst_and_fits_in_hwi, int_cst_value, build_int_cst,
	divide, strip_offset, add_cost, multiply_by_cost, get_address_cost,
	force_var_cost, peel_address, ptr_difference_const,
	split_address_cost, ptr_difference_cost, difference_cost,
	get_computation_cost): New functions.
	(find_induction_variables): Formating changes.
	(record_use): Initialize new fields.
	(add_old_ivs_candidates): Do not add invariants.
	(set_use_iv_cost): Set min_cost.
	(get_use_iv_cost): Fix.
	(get_computation): Use less memory.
	(determine_use_iv_cost_generic, determine_use_iv_cost_address,
	determine_use_iv_cost_condition, determine_iv_cost): Use
	new cost estimation functions.
	(compute_iv_set_cost): Removed.
	(struct undo_record): New.
	(use_with_min_choices, min_remaining_cost, undo_changes,
	execute_removal, add_forbidden_ivs, try_candidate, set_cost,
	get_initial_solution): New functions.
	(find_optimal_iv_set_1, find_optimal_iv_set): Made more effective.
	(create_new_ivs, rewrite_use_nonlinear_expr, rewrite_use_address):
	Unshare created expressions.
	(free_loop_data): Free new structures.
	(tree_ssa_iv_optimize_loop): Remove garbage collection.
	(tree_ssa_iv_optimize): Use TV_TREE_LOOP_IVOPTS timevar.
	* tree-ssa-loop.c (pass_ch): Use TV_TREE_CH timevar.

2004-02-02  Steven Bosscher  <stevenb@suse.de>

	* common.opt: Re-order some options in ASCII collating order.

2004-01-30  Devang Patel  <dpatel@apple.com>

	* cfgloopmanip.c (loopify): Always redirect switch_bb's BRANCH_EDGE,
	however redirect FALLTHRU_EDGE only if asked.
	* tree-ssa-loop-manip.c (tree_ssa_loop_version): Update FALLTHRU_EDGE
	pending stmts.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (find_optimal_iv_set_1, compute_iv_set_cost):
	Fix memory leak, speed up.
	(tree_ssa_iv_optimize_finalize): Move reseting of DECL_RTL...
	(free_loop_data): ... here.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (FOR_BB_INSNS, FOR_BB_INSNS_REVERSE): New macros.
	* cfgloop.c (num_loop_branches): New function.
	* cfgloop.h (struct loop_desc): Add field strange.
	(struct loop): Remove fields simple, desc, has_desc.
	(num_loop_branches, get_simple_loop_desc, free_simple_loop_desc):
	Declare.
	(simple_loop_desc): New inline function.
	* cfgloopanal.c (count_loop_iterations): Set field strange.
	(simple_loop_exit_p): Initialize postincr properly.
	* loop-iv.c (assign_luids, mark_sets, simplify_using_initial_values):
	Use FOR_BB_INSNS/FOR_BB_INSNS_REVERSE.
	(iv_number_of_iterations): Restrict the number of iterations to the
	actual mode.
	(find_simple_exit): Check results with the old simple loop analyser.
	(get_simple_loop_desc, free_simple_loop_desc): New functions.
	* loop-unroll.c (loop_exit_at_end_p): New function.
	(unroll_and_peel_loops, peel_loops_completely,
	decide_unrolling_and_peeling, decide_peel_once_rolling,
	decide_peel_completely, peel_loop_completely,
	decide_unroll_constant_iterations, unroll_loop_constant_iterations,
	decide_unroll_runtime_iterations, unroll_loop_runtime_iterations,
	decide_peel_simple, decide_unroll_stupid): Use new iv analysis.
	* predict.c (predict_loops): Use new iv analysis.

	* tree-ssa-loop.c (copy_loop_headers): Predict entry edge from
	copied loop header to be taken.

	* tree-cfg.c (tree_find_edge_insert_loc,
	bsi_insert_on_edge_immediate): Return the newly created block.
	(bsi_commit_edge_inserts_1): Add parameter to
	tree_find_edge_insert_loc call.
	* tree-flow.h (bsi_insert_on_edge_immediate): Declaration changed.
	* tree-ssa-loop-ivopts.c (create_new_iv): Update loop for newly
	created block.

	* cfg.c (unlink_block): Clean prev_bb and next_bb fields.

2004-01-29  Devang Patel  <dpatel@apple.com>

	* cfglayout.h (loopify): Add new bool parameter.
	* cfgloopmanip.c (loopify): Support new bool argument.
	* loop-unswitch.c (unswitch_loop): Supply additional argument 'true'
	to loopify.
	* tree-cfg.c (tree_block_label): Make externally visible.
	* tree-flow.h (tree_block_label, test_loop_versioning, tree_ssa_loop_version): New
	extern decls.
	* tree-ssa-loop-manip.c (lv_adjust_loop_entry_edge, lv_udate_pending_stmts,
	lv_adjust_loop_header_phi, tree_ssa_loop_version): New functions.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Test loop versioning.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c (scev_analyze_inner_loop_phi): Add ;.

2004-01-29  Sebastian Pop  <sebastian.pop@ensmp.fr>

	* Makefile.in (tree-ssa-dom.o): Depends on cfgloop.h.
	* tree-flow-inline.h (loop_of_stmt): New function.
	* tree-ssa-dom.c: Include cfgloop.h.
	(tree_ssa_dominator_optimize): Detect and finalize the natural
	loops structure.
	(simplify_rhs_and_lookup_avail_expr): Verify that the folded
	operations belong to the same loop.

	* cfgloop.h (loop): Rewrite comments for the nb_iterations field.
	* tree-data-ref.c (analyze_all_data_dependences): Increase the size
	of the dependence graph when computing all the dependences.
	* tree-optimize.c (init_tree_optimization_passes): Move the
	pass_scev after the pass_pre.
	* tree-scalar-evolution.h: Update comments.
	* tree-scalar-evolution.c (symbolically_analyze,
	scev_follow_ssa_edge_same_loop, scev_follow_ssa_edge_inner_loop,
	loop_is_strictly_included_in, scev_analyze_inner_loop_phi,
	draw_tree_cfg): New functions.
	(compute_value_on_exit_of_loop): Removed.
	(analyze_evolution): Mark phi nodes instead of looking into
	the already_visited array.
	(analyze_evolution_in_loop): Use scev_follow_ssa_edge_same_loop,
	scev_follow_ssa_edge_inner_loop.
	(scev_analyze_modify_expr): Refine the wrap-around case.
	(scev_follow_ssa_edge): Handle edges to the current and inner loops
	separately calling scev_follow_ssa_edge_same_loop or
	scev_follow_ssa_edge_inner_loop.
	(merge_branches_of_condition_phi_node): Restructure.
	(set_nb_iterations_in_loop): Add one to the number of iterations.
	When the loop copy headers is on, we always exit the loop after
	having executed once its body.
	(record_dependences_for_opnd): Do not record dependences on variables
	that are not in the current loop.
	(pass_scev_depend): Rename the pass from alldd to ddall.
	* tree-ssa-loop.c (gate_ch): New function.
	(pass_ch): Use gate_ch.
	* doc/invoke.texi (-ftree-ch, -fdump-tree-ch): Document flags.
	(fdump-tree-scev, fdump-tree-ddall): Update names, and comments.

	* common.opt (ftree-ch): Document.
	* flags.h (flag_tree_ch): Declare.
	* opts.c (flag_tree_ch): Set it on by default.
	(flag_scalar_evolutions, flag_all_data_deps): Turn off by default.
	(OPT_ftree_ch): Handle this case.
	* toplev.c (lang_independent_options): Register flag_tree_ch.

2004-01-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.c (split_block): Update probabilities.

	* cfgloopmanip.c (loopify): Always redirect branch edge to the new
	loop.
	* loop-iv.c (canon_condition, simplify_using_condition): Export.
	(check_simple_exit): Do not allow cc mode registers.
	* loop-unroll.c (unroll_loop_runtime_iterations): Use
	compare_and_jump_seq.
	* loop-unswitch.c (may_unswitch_on_p): Renamed to may_unswitch_on,
	returns the condition, use iv_analyse.
	(compare_and_jump_seq): New function.
	(unswitch_loops): Call iv_analysis_done.
	(unswitch_single_loop, unswitch_loop): Handle nontrivial invariants.
	* rtl.h (compare_and_jump_seq, canon_condition,
	simplify_using_condition): Declare.

2004-01-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-iv.c: New.
	* loop-doloop.c: New.
	* Makefile.in (loop-doloop.o, loop-iv.o): Add.
	* alias.c (init_alias_analysis): Test flag_unroll_loops instead of
	flag_old_unroll_loops.
	* cfgloop.h (struct rtx_iv, struct niter_desc): New.
	(get_loop_level, iv_analysis_loop_init, iv_get_reaching_def,
	iv_analyse, find_simple_exit, iv_number_of_iterations,
	iv_analysis_done, doloop_optimize_loops): Declare.
	* cfgloopanal.c (get_loop_level): New.
	* common.opt (floop-optimize2): New.
	(fold-unroll-loops, fold-unroll-all-loops): Remove.
	* doloop.c (doloop_condition_get): Export.
	* flags.h (flag_old_unroll_loops, flag_old_unroll_all_loops):
	Declaration removed.
	* loop-unswitch.c (reversed_condition): Export.
	* loop.c (loop_invariant_p): Use flag_unroll_loops instead
	of flag_old_unroll_loops.
	* opts.c (common_handle_option): Handle -floop-optimize2,
	do not handle -fold-unroll-loops and -fold-unroll-all-loops.
	* params.def (PARAM_MAX_DOLOOP_INSNS): New.
	* rtl.h (get_mode_bounds, doloop_condition_get,
	reversed_condition): Declare.
	* stor-layout.c (get_mode_bounds): New function.
	* toplev.c (flag_old_unroll_loops, flag_old_unroll_all_loops):
	Remove.
	(flag_loop_optimize2): New.
	(rest_of_handle_loop_optimize): Use flag_unroll_loops instead
	of flag_old_unroll_loops.
	(rest_of_handle_loop2): Call doloop_optimize_loops.
	(rest_of_compilation): Use flag_loop_optimize2.
	(process_options): Remove flag_old_unroll_loops handling, add
	flag_loop_optimize2 handling.
	* toplev.h (flag_loop_optimize2): Declare.
	* unroll.c (unroll_loop): Use flag_unroll_all_loops instead of
	flag_old_unroll_all_loops.

2004-01-26  Dorit Naishlos <dorit@il.ibm.com>

	* Makefile.in: (tree-vectorizer.o): Remove dependency on real.h.
	* tree-vectorizer.c: (real.h): Remove included file.
        (vect_get_vec_def_for_operand): No need to explicitly use build_int_2
        and build_real.

        (vect_transform_loop_bound): Create loop IV update at loop exit
        block, following changes in loop control.

        (vectorize_loops): Remove debug printout.

        * config/rs6000/altivec.md: (*movv4si_internal): More complex
        condition.
        (*movv8hi_internal1): Likewise.
        (*movv16qi_internal1): Likewise.
        (*movv4sf_internal1): Likewise.

2004-01-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c (determine_set_costs): Do not use
	GENERAL_REGNO_P.

2004-01-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c: New file.
	* Makefile.in (tree-ssa-loop-ivopts.o): Add.
	* expr.c (expand_expr_1): Handle expand_expr_1.
	* fold-const.c (invert_tree_comparison, invert_tree_comparison):
	Export.
	* tree-cfg.c (stmt_bsi): New function.
	* tree-flow.h (stmt_bsi, tree_ssa_dce_no_cfg_changes,
	tree_ssa_iv_optimize): Declare.
	* tree-simple.c (get_base_symbol): Handle INDIRECT_REF.
	* tree-ssa-dce.c (tree_ssa_dce_no_cfg_changes): Split from ...
	(tree_ssa_dce): ... here.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_iv_optimize.
	* tree-ssanames.c (make_ssa_name): Allow creating ssa name without
	statement.
	* tree.h (invert_tree_comparison, swap_tree_comparison): Declare.

2004-01-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* doloop.c (doloop_optimize): Test for loop->top instead of
	loop->scan_start.

2004-01-22  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-alias-common.c (HAVE_BANSHEE): Do not define it.
	(create_alias_vars): Do not test HAVE_BANSHEE value.

2004-01-22  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-manip.c: New file.
	* Makefile.in (tree-ssa-loop-manip.o): Add.
	* basic-block.h (struct reorder_block_def): New field copy_number.
	* cfghooks.c (split_block, make_forwarder_block): Update irreducible
	loop information.
	* cfgloopmanip.c (duplicate_loop_to_header_edge): Set copy_number.
	* tree-cfg.c (tree_duplicate_bb): Duplicate also virtual operands.
	* tree-flow.h (enum tree_ann_type): Add MISC_ANN.
	(struct misc_ann_d): New.
	(union tree_ann_d): Add misc field.
	(test_unrolling_and_peeling, tree_duplicate_loop_to_header_edge):
	Declare.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Call
	test_unrolling_and_peeling.
	* tree-ssa-operands.c (copy_virtual_operands): New.
	* tree-ssa-operands.h (copy_virtual_operands): Declare.

	* dominance.c: Fix comment.

	* cfgloopanal.c (mark_irreducible_loops): Rewriten.
	(struct edge, struct vertex, struct graph): New.
	(dump_graph, new_graph, add_edge, dfs, check_irred, for_each_edge,
	free_graph): New functions.

2004-01-21  Sebastian Pop  <s.pop@laposte.net>

	* tree-scalar-evolution.c (pass_scev): Don't use a name.
	(pass_scev_anal): Named this pass "scev".

2004-01-21  Dorit Naishlos <dorit@il.ibm.com>

	* Makefile.in: (tree-vectorizer.o): Add dependency on real.h.
        * tree-vectorizer.c: (vect_is_simple_use): Allow constants.
        (real.h): Included to support constants vectorization.
        (vect_get_vec_def_for_operand): New function.
        (vect_transform_binop): Use above new function.
        (vect_transform_store): Likewise.
        (vect_transform_load): Likewise.

        (vect_get_new_vect_var): Allow more flexibility in naming scheme.
        (vect_create_index_for_array_ref): Call vect_get_new_vect_var with a
        name prefix instead of a variable.
        (vect_create_data_ref): Likewise.
        (vect_create_destination_var): Likewise.

        (vect_analyze_data_refs): Temporarily restrict vectorizable data refs
	to ARRYA_RES which base is a VAR_DECL.
        (vect_create_data_ref): Support only VAR_DECL array base. Mark all
        vops for renaming.

        (vect_get_array_first_index): New function.
        (vect_create_index_for_array_ref): Consider array_first_index.
        (vect_analyze_data_ref_access): Likewise.

        (vect_get_loop_niters): Use number_of_iterations_in_loop.
        (vect_analyze_loop_form): Don't attempt to vectorize if
        number_of_iterations == 0.

        (vect_analyze_operations): Fix vectype analysis.

        (vect_create_index_for_array_ref): Fix code insertion in loop prolog.
        (vect_transform_loop_bound): Likewise.

2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>,
	    Devang Patel <dpatel@apple.com>

	* basic-block.h (struct reorder_block_def): Moved from cfglayout.h.
	(alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare.
	* bb-reorder.c (copy_bb, copy_bb_p): Use duplicate_block hooks.
	* loop-unswitch.c (unswitch_loop): Ditto.
	* tracer.c (tail_duplicate): Ditto.
	* tree-ssa-loop.c (copy_loop_headers): Ditto.
	* cfg.c (rbi_pool): New.
	(alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New functions.
	* cfghooks.c (can_duplicate_block_p, duplicate_block): New functions.
	* cfghooks.h (struct cfg_hooks): Add can_duplicate_block_p and
	duplicate_block hooks.
	(can_duplicate_block_p, duplicate_block): Declare.
	* cfglayout.c (cfg_layout_pool): Removed.
	(cfg_layout_initialize_rbi): Removed.
	(fixup_reorder_chain): Use initialize_bb_rbi.
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb):
	Ir-independent parts moved to cfghooks.c.
	(cfg_layout_initialize): Use alloc_rbi_pool and initialize_bb_rbi.
	(cfg_layout_finalize): Use free_rbi_pool.
	(can_copy_bbs_p): Use can_duplicate_block_p.
	(copy_bbs): Use duplicate_block.
	* cfglayout.h (struct reorder_block_def): Moved to basic-block.h
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb,
	cfg_layout_initialize_rbi): Declaration removed.
	* cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi.
	(cfg_layout_rtl_cfg_hooks): Add cfg_layout_can_duplicate_bb_p and
	cfg_layout_duplicate_bb.
	* tree-cfg.c (build_tree_cfg): Call alloc_rbi_pool.
	(create_bb): Call initialize_bb_rbi.
	(delete_tree_cfg): Call free_rbi_pool.
	(tree_duplicate_bb): Ir independent parts moved to cfghooks.c.
	(tree_cfg_hooks): Add tree_can_duplicate_bb_p and tree_duplicate_bb.
	* tree-flow.h (tree_duplicate_bb): Declaration removed.

2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-alias-common.c (create_alias_vars): Don't use
	andersen_alias_ops when we don't HAVE_BANSHEE.

	* tree-ssa-loop.c (pass_ch): Remove TODO_verify_ssa.

2004-01-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Merge from tree-ssa branch (lno-merge-20040120).

2004-01-18  Dorit Naishlos <dorit@il.ibm.com>

        * tree-scalar-evolution.c: (get_loop_exit_condition): Exposed to
        external usage.
        * tree-scalar-evolution.h: (get_loop_exit_condition): Exposed to
        external usage.
        * tree-vectorizer.c: (vect_is_simple_iv_evolution): Additional argument
        to control how strict this function would be.
        (vect_create_index_for_array_ref): Invoke vect_is_simple_iv_evolution
        with "strict" set to true.
        (vect_transform_loop_bound): More general loop bound transformation
        scheme, independent of the loop exit condition form.
        (vect_analyze_scalar_cycles): Invoke vect_is_simple_iv_evolution with
        "strict" set to false.
        (vect_get_loop_niters): Use monev utilities/precomputed info -
        loop->nb_iterations and get_loop_exit_condition.

2004-01-17  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c: (vect_get_name_for_new_var): Removed.
        (vect_get_new_vect_var): New function.  Replaces above function.
        (vect_create_index_for_array_ref): Call vect_get_new_vect_var
        instead of vect_get_name_for_new_var.
        (vect_create_data_ref): Likewise.
        (vect_create_destination_var): Likewise.
        * tree-vectorizer.h: (vect_var_kind): New enum type.

2004-01-15  Sebastian Pop  <s.pop@laposte.net>

	* tree-chrec.c (remove_initial_condition,
	add_expr_to_loop_evolution_1, add_expr_to_loop_evolution_2): New functions.
	(add_expr_to_loop_evolution): Use these functions.
	(build_polynomial_evolution_in_loop,
	build_exponential_evolution_in_loop): Move from here...
	* tree-chrec.h (build_polynomial_evolution_in_loop,
	build_exponential_evolution_in_loop): Remove declarations.
	* tree-scalar-evolution.c (build_polynomial_evolution_in_loop,
	build_exponential_evolution_in_loop): ... to here.  Declare
	these functions static.
	(select_outer_and_current_evolutions): New function.
	(matched_an_increment, scev_analyze_modify_expr,
	compute_overall_effect_of_inner_loop,
	analyze_scalar_evolution): Use this function.
	(add_to_evolution, multiply_evolution): Construct canonical
	chains of recurrences.

2004-01-14  Dorit Naishlos <dorit@il.ibm.com>
            Sebastian Pop  <s.pop@laposte.net>

        * tree-vectorizer.c: (vect_is_simple_iv_evolution): Correctly use
        APIs of the new monev analyzer. Additional argument (loop_num).
        (vect_transform_loop_bound): Additional argument to
        vect_is_simple_iv_evolution.
        (vect_analyze_scalar_cycles): Likewise.
        (vect_analyze_data_ref_access): Likewise.
        (vect_get_loop_niters): Likewise.

2004-01-14  Dorit Naishlos <dorit@il.ibm.com>

        * tree-optimize.c: (optimize_function_tree): Cleanup.

        * tree-vectorizer.h: (DBG_VECT, DBG_VECT2): Removed.
        (vec_array_base_name_differ_p): Removed.
        (vec_analyze_array): Removed.
        (struct _stmt_vec_info): New field: loop.
        (STMT_VINFO_LOOP): New access function to above new field.
        (new_stmt_vec_info): Additional argument.

        * tree-vectorizer.c: (vect_is_simple_use): New function.
        (vect_is_supportable_binop): Added call to vect_is_simple_use().
        (vect_is_supportable_store): Added call to vect_is_simple_use().
        (vect_is_supportable_load): Added call to vect_is_simple_use().

        (vect_create_index_for_array_ref): Correct handling of accesses with
        an offset (e.g, a[i+OFF]).
        (vect_create_data_ref): Pass STMT as an argument to
        vect_create_index_for_array_ref, instead of an operand.
        (vect_transform_store): Handle accesses with an offset.
        (vect_transform_load): Handle accesses with an offset.

        (vect_create_data_ref): Set the mem_tag of the pointer used for the
        vector data-access to reflect correct may-alias info.

        (get_address_calculation_operands): Removed.
        (exist_non_indexing_operands_for_use_p): New function, in place of
        get_address_calculation_operands() to correctly handle induction (for
        now this means to detect and not attempt to vectorize computations
        like a[i]=i).
        (vect_analyze_scalar_cycles): call above new function instead of
        get_address_calculation_operands().
        (vect_mark_stmts_to_be_vectorized): Likewise.

        (get_vectype_for_scalar_type): Added test of VECTOR_MODE_SUPPORTED_P.

        (new_stmt_vec_info): Takes also LOOP as an argument and initializes
        new field STMT_VINFO_LOOP.
        (new_loop_vec_info): Pass additional argument to new_stmt_vec_info.

        (vect_stmt_relevant_p): Use flow_bb_inside_loop_p instead of comparing
        loop->depth's.
        (vect_analyze_operations): Likewise.

        (vect_align_data_ref): Removed stderr debug printouts, some of which
        replaced with code dumping dependending on TDF_DETAILS to dump_file.
        (vect_create_index_for_array_ref): Likewise.
        (vect_create_destination_var): Likewise.
        (vect_create_data_ref): Likewise.
        (vect_transform_binop): Likewise.
        (vect_transform_store): Likewise.
        (vect_transform_load): Likewise.
        (vect_transform_stmt): Likewise.
        (vect_transform_loop_bound): Likewise.
        (vect_transform_loop): Likewise.
        (vect_analyze_operations): Likewise.
        (vect_is_simple_iv_evolution): Likewise.
        (vect_analyze_scalar_cycles): Likewise.
        (vect_analyze_data_ref_dependences): Likewise.
        (vect_analyze_data_refs): Likewise.
        (vect_mark_relevant): Likewise.
        (vect_stmt_relevant_p): Likewise.
        (vect_mark_stmts_to_be_vectorized): Likewise.
        (vect_get_loop_niters): Likewise.
        (vectorize_loops): Likewise.

2004-01-13  Sebastian Pop  <s.pop@laposte.net>
            Daniel Berlin  <dberlin@dberlin.org>

	* tree-fold-const.h (tree_fold_int_plus, tree_fold_int_minus,
	tree_fold_int_multiply): Remove NON_LVALUE_EXPR from the
	answers of the folder.  Fixes bootstraps for powerpc.

2004-01-12  Sebastian Pop  <s.pop@laposte.net>

	* tree-chrec.c (chrec_fold_plus, chrec_fold_multiply): Verify
	that there is no chrecs nested in the operands before calling
	the folder.
	(evolution_function_in_loop_num): When there is no evolution
	in the loop, return the initial condition.
	(evolution_part_in_loop_num): When there is no evolution
	in the loop, return NULL_TREE.
	(chrec_eval_next_init_cond): Adapt the function for the
	multivariate case.
	(tree_contains_chrecs): Avoid the use of double negation.
	* tree-chrec.h (chrec_eval_next_init_cond): Add a parameter
	for the dimension in which to evaluate the variation.
	* tree-scalar-evolution.c (is_ssa_name_a_version_of_variable,
	expression_contains_variable_p, remove_variable_from_expression,
	analyze_non_gimple_initial_condition, matched_an_increment,
	matched_an_exponentiation, matched_a_wrap_around,
	matched_an_arithmetic_wrap_around,
	evolution_of_phi_already_analyzed_p): New static functions.
	(scev_analyze_modify_expr): Use these functions.  Refine the
	cases detected as wrap-around variables.
	(analyze_initial_condition): Don't erase the evolution in the
	previous dimensions when computing the initial condition for a
	new loop.
	(analyze_evolution_in_loop): Call the scev_analyze_modify_expr
	on the tree node, not on its evolution.
	(scev_follow_ssa_edge): In the case of an inner loop-phi-node,
	when the outer edge is a phi-node follow up the edge.
	(scev_follow_ssa_edge): Avoid the analysis of the inner loop
	when it has already been analyzed.
	(merge_evolutions): Refine the operation for zero, one, and
	more branches of evolutions.

2004-01-09  Sebastian Pop  <s.pop@laposte.net>

	* tree-scalar-evolution.c: New version of the analyzer.
	* tree-scalar-evolution.h: Same.
	* tree-chrec.c: Same.
	* tree-data-ref.c: Same.
	* tree-chrec.h: Same.
	* tree-data-ref.h: Same.
	* tree-fold-const.h: Same.

	* tree-vectorizer.c (vect_transform_loop_bound,
	vect_analyze_scalar_cycles, vect_analyze_data_ref_access,
	vect_analyze_data_refs, vect_get_loop_niters): Use the new
	interface of the analyzer.
	* tree-optimize.c (optimize_function_tree): Same.

2004-01-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.h (loop_is_included_in): Declaration removed.
	* tree-scalar-evolution.c (stmt_is_in_loop, stmt_is_not_in_loop,
	loop_is_included_in): Use existing functions to implement
	them.

2004-01-06  Sebastian Pop  <s.pop@laposte.net>

	* cfgloop.h (loop_is_included_in, outer_loop, inner_loop,
	next_loop, loop_num, loop_depth, loop_header,
	loop_nb_iterations, loop_num_exits, loop_exit_edges,
	loop_exit_edge): New inline functions.
	(loop_is_included_in): Declare here.
	* tree-flow-inline.h (loop_of_stmt): New inline function.
	* tree-scalar-evolution.c (loop_is_included_in): Remove declaration.
	(stmt_is_in_loop, stmt_is_not_in_loop): New functions.
	(loop_is_included_in, loop_is_included_in_rec): Moved up in the same file.

2004-01-06  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c: Fix typos.

2004-01-05  Andreas Jaeger  <aj@suse.de>

	* tree-vectorizer.h: Follow coding standards, remove extra
	whitespace.
	* tree-vectorizer.c: Likewise.

	* tree-vectorizer.c (vectorize_loops): Output statistics to
	dump_file, fix printf string.
	(vect_transform_loop): Replace DBG_VECT code with code dumping
	dependend on TDF_DETAILS to dump_file.
	(vect_is_supportable_binop): Likewise.
	(vect_analyze_operations): Likewise.
	(get_address_calculation_operands): Likewise.
	(vect_analyze_scalar_cycles): Likewise.
	(vect_analyze_data_ref_dependence): Likewise.
	(vect_analyze_data_ref_access): Likewise.
	(vect_analyze_data_ref_accesses): Likewise.
	(vect_analyze_data_refs): Likewise.
	(vect_mark_relevant): Likewise.
	(vect_get_loop_niters): Likewise.
	(vect_mark_stmts_to_be_vectorized): Likewise.
	(vect_analyze_loop_form): Likewise.
	(vectorize_loops): Likewise.

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

2004-01-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* doloop.c (doloop_optimize): Update number of iterations for the
	loops entered at bottom.

2004-01-04  Andreas Jaeger  <aj@suse.de>

	* common.opt: Re-order some options in ASCII collating orders.

2004-01-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.h (struct cfg_hooks): New fields split_block_after_labels
	and move_block_after, type of cfgh_make_forwarder_block field changed.
	(HEADER_BLOCK, LATCH_EDGE): Moved to cfgloop.c.
	(split_block_after_labels, move_block_after): New macros.
	(make_forwarder_block): Changed.
	* cfgloop.c (HEADER_BLOCK, LATCH_EDGE): Moved from cfghooks.h.
	(update_latch_info, mfb_keep_just, mfb_keep_nonlatch,
	fill_sons_in_loop): New functions.
	(canonicalize_loop_headers): Changed due to changes in
	make_forwarder_block.
	* cfgloopmanip.c (split_loop_bb): Don't update dominators.
	(create_preheader): Use make_forwarder_block.
	(mfb_keep_just, mfb_update_loops): New.
	* cfgrtl.c (rtl_split_block_after_labels): New.
	(redirect_edge_with_latch_update): Removed.
	(rtl_make_forwarder_block): New sematics.
	(rtl_split_block): Update dominators.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks):
	Add rtl_split_block_after_labels.
	* tree-cfg.c (tree_make_forwarder_block): Changed semantics.
	(create_blocks_annotations): Removed.
	(build_tree_cfg): Don't call create_blocks_annotations.
	(create_bb): Create annotations for a new block.
	(tree_split_edge): Don't call create_block_annotation.
	Update irreducible loop information.
	(tree_loop_optimizer_finalize): Add loop structure check.
	(tree_redirect_edge_and_branch_1): Return the original edge if
	no redirecting is neccessary.
	(tree_split_block): Make the semantics same as for rtl_split_block.
	(tree_split_block_after_labels, tree_move_block_after): New.
	(tree_cfg_hooks): Add tree_split_block_after_labels and
	tree_move_block_after.

	* cfgloopanal.c (mark_irreducible_loops): Fix.
	* loop-unswitch.c (unswitch_loop): Fix.

	* Makefile.in (tree-ssa-loop.o): Add cfgloop.h and tree-inline.h
	dependency.
	* jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test,
	copy_loop_headers): Removed.
	* rtl.h (copy_loop_headers): Declaration removed.
	* toplev.c (rest_of_compilation): Do not call loop header copying.
	* tree-dump.c (dump_files): Add .ch dump.
	* tree-flow.h (tree_duplicate_bb, copy_loop_headers): Declare.
	* tree-optimize.c (optimize_function_tree): Add loop header copying
	pass.
	* tree-ssa-loop.c: Include cfgloop.h and tree-inline.h.
	(dump_file, dump_flags): Renamed to loop_dump_file and
	loop_dump_flags.
	(call_expr_p, should_duplicate_loop_header_p, copy_loop_headers):
	New.
	* tree.h (enum tree_dump_index): Add ch dump.
	* doc/invoke.texi (-fdump-tree-copy-headers): Document.
	* testsuite/gcc.dg/tree-ssa/20030711-1.c: Update test outcome.
	* testsuite/gcc.dg/tree-ssa/20030714-2.c: Ditto.
	* testsuite/gcc.dg/tree-ssa/copy-headers.c: New test.
	* tree-cfg.c (tree_duplicate_bb): New function.

	* tree-ssa-loop-im.c: New file.
	* Makefile.in (tree-ssa-loop-im.o): Add.
	* params.def (PARAM_LIM_EXPENSIVE): New parameter.
	* tree-dump.c (dump_files): Move .loop dump.
	* cfgloop.h (superloop_at_depth, get_loop_body_in_dom_order): Declare.
	(loop_dump_file, loop_dump_flags): Declare variables.
	* cfgloop.c (superloop_at_depth, get_loop_body_in_dom_order): New
	functions.
	* tree-flow.h (struct stmt_ann_d): Add aux field.
	(bsi_commit_edge_inserts): Declaration changed.
	(tree_ssa_lim): Declare.
	* tree-mudflap.c (mf_xform_derefs_1): Use in_array_bounds_p.
	* tree-optimize.c (optimize_function_tree): Move loop optimization
	pass.
	* tree-sra.c (scalarize_structures): Modified due to
	bsi_commit_edge_inserts change.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_lim.
	* tree-ssa.c (rewrite_trees, rewrite_vars_out_of_ssa): Modified due to
	bsi_commit_edge_inserts change.
	* tree.c (in_array_bounds_p): New function.
	* tree.h (in_array_bounds_p): Declare.
	(enum tree_dump_index): Move loop dump.
	* tree-cfg.c (bsi_commit_edge_inserts): Don't take update_annotations
	argument.

	* tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ensure that the
	closed files are not used.

	* tree-tailcall.c (find_tail_calls, eliminate_tail_call): Update
	phi nodes for vdefs of the eliminated call.

2004-01-03  Sebastian Pop  <s.pop@laposte.net>

	* tree-optimize.c (optimize_function_tree): Move the closing brace of
	DCE2 to the right place.

2004-01-03  Sebastian Pop  <s.pop@laposte.net>

	* tree-vectorizer.c (vect_analyze_operations): Test vectorization_factor
	before computing modulo.

2004-01-02  Sebastian Pop  <s.pop@laposte.net>

	* tree-vectorizer.c (vect_is_supportable_binop): Returns false instead
	of NULL.

2004-01-02  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h (UNITS_PER_SIMD_WORD): New.

2004-01-02  Sebastian Pop  <s.pop@laposte.net>

	* tree-data-ref.c (vec_analyze_array, vec_array_base_name_differ_p,
	array_base_name_differ_p): Removed for fixing the previous patch.

2004-01-02  Richard Henderson  <rth@redhat.com>

	* target.h (struct gcc_target): Remove vectype_for_scalar_type.
	* target-def.h (TARGET_VECTYPE_FOR_SCALAR_TYPE): Remove.
	* config/rs6000/rs6000.c (rs6000_vectype_for_scalar_type): Remove.
	(TARGET_VECTYPE_FOR_SCALAR_TYPE): Remove.

	* tree.c (build_vector_type_with_mode): Rename from make_vector,
	remove unsignedp argument, update callers.
	(build_vector_type): New.
	* tree.h (build_vector_type): Declare it.
	* tree-vectorizer.c (get_vectype_for_scalar_type): Use it.

2004-01-02  Richard Henderson  <rth@redhat.com>

	* tree-scalar-evolution.c (finalize_scalar_evolutions_analyzer):
	Clear dump_file.

2004-01-02  Sebastian Pop  <s.pop@laposte.net>

	* tree-data-ref.c (vec_analyze_array): Renamed to analyze_array.
	(analyze_array): Removed.
	(find_data_references): Adapted to use the new analyze_array
	function.
	(array_base_name_differ_p): Moved to tree-data-ref.h.
	(vec_array_base_name_differ_p): Removed.
	* tree-data-ref.h (array_base_name_differ_p): Moved here.
	* tree-vectorizer.c (vect_analyze_data_ref_dependence): Use
	array_base_name_differ_p instead of vec_array_base_name_differ_p.
	(vect_analyze_data_refs): Use analyze_array instead of
	vec_analyze_array.
	(vectorize_loops): Remove the initializers and finalizers of the
	scalar evolution analyzer.

2004-01-01  Dorit Naishlos <dorit@il.ibm.com>

        * tree-vectorizer.c: New file. Implements loop vectorization
        pass.
        * tree-vectorizer.h: New file.
        * Makefile.in: (tree-vectorizer.c,tree-vectorizer.h): New files.
        * tree-dump.c: (dump_files): New dump file for the new
        vectorization pass.
        * tree.h: (TDI_vect): New dump index for the new vectorization
        pass.
        * timevar.def (TV_TREE_VECTORIZATION): Support new
        vectorization pass.
        * opts.c: (flag_tree_vetorize): New flag to enable/disable the
        new vectorization pass.
        * flags.h: Same.
        * toplev.c: Same.
        * common.opt: (ftree-vectorize): Same.
        * doc/invoke.texi: Document above new options.
        * tree-optimize.c: (optimize_function_tree): Invoke the new
        vetorization pass.
        * tree-flow.h: (struct stmt_ann_d): New field (aux) to allow
        recording information per stmt.
        * tree-data-ref.c (vec_analyze_array): New function, exposing
        API to the vectorizer.
        (vec_array_base_name_differ_p): New function, exposing API to
        the vectorizer.
        * tree-data-ref.h: Same.
        * defaults.h: (UNITS_PER_SIMD_WORD): Define.
        * config/rs6000/rs6000.h: (UNITS_PER_SIMD_WORD): Same.
        * target-def.h (TARGET_VECTYPE_FOR_SCALAR_TYPE): Declare a new
        target hook for vectorization.
        * target.h (vectype_for_scalar_type): Same.
        * config/rs6000/rs6000.c: (rs6000_vectype_for_scalar_type):
        Implement the above new target hook.

2003-12-31  Sebastian Pop  <s.pop@laposte.net>

	* version.c (version_string): Change the identifier for the
	sub-branch.

2003-12-31  Sebastian Pop  <s.pop@laposte.net>
            Daniel Berlin  <dberlin@dberlin.org>

	* tree-phinodes.c (create_phi_node): Initialise PHI_MARKED to 0.
	* tree-scalar-evolution.c (already_visited,
	node_already_visited_by_ssa_path): Removed.
	(analyze_evolution): Remove initialisation of already_visited.
	(construct_schedule): idem.
	(monev_follow_ssa_edge): use PHI_MARKED for deciding whether
	to analyze the phi-node.
	(follow_ssa_edge_and_record_dependences_rec): idem.
	* tree.h (PHI_MARKED): New macro.
	(tree_phi_node): Add a field marked.

2003-12-27  Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in (OBJS-common): Added tree-chrec.o
	tree-scalar-evolution.o, tree-data-ref.o, tree-fold-const.o.
	(tree-optimize.o): Add dependencies on tree-fold-const.h
	tree-chrec.h tree-scalar-evolution.h tree-data-ref.h
	(tree-chrec.o, tree-scalar-evolution.o, tree-data-ref.o,
	tree-fold-const.o): New rules.
	* cfgloop.h (loop): New field nb_iterations.
	(loop_from_num): New function.
	* common.opt (fscalar-evolutions, fall-data-deps): Added.
	* flags.h (flag_scalar_evolutions, flag_all_data_deps): Declared.
	* opts.c (decode_options, common_handle_option): Initialize
        flag_scalar_evolutions and flag_all_data_deps.
	* timevar.def (TV_SCALAR_EVOLUTIONS, TV_ALL_DATA_DEPS): New.
	* toplev.c (flag_scalar_evolutions, flag_all_data_deps): Defined.
	(lang_independent_options): Add flag_scalar_evolutions and
	flag_all_data_deps.
	* tree-dump.c (scev, alldd): New extensions.
	* tree.h (tree_dump_index): Added TDI_scev and TDI_alldd.
	* tree-optimize.c (tree-fold-const.h, tree-chrec.h,
	tree-scalar-evolution.h, tree-data-ref.h): Included.
	(optimize_function_tree): Added the entry point for the analysis of
	scalar evolutions and data dependences.
	* tree-pretty-print.c (tree-fold-const.h, tree-chrec.h): Included.
	(dump_generic_node): Added code for dumping POLYNOMIAL_CHREC,
	EXPONENTIAL_CHREC, PERIODIC_CHREC, and INTERVAL_CHREC.
	* tree.def (INTERVAL_CHREC, POLYNOMIAL_CHREC, EXPONENTIAL_CHREC,
	PERIODIC_CHREC): New tree nodes.
	* varray.h (index_in_varray_tree, tree_is_in_varray_tree_p,
	index_in_varray_int, int_is_in_varray_int_p): New inlined functions.
	* tree-chrec.c, tree-chrec.h, tree-data-ref.c, tree-data-ref.h,
	tree-fold-const.c, tree-fold-const.h, tree-scalar-evolution.c,
	tree-scalar-evolution.h: New files.
	* doc/invoke.texi (-fdump-scalar-evolutions, -fdump-all-data-deps):
	Documented.
	* testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-[01..50].c : New testcases.
	* testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-[01..50].c.scev: Expected
	outputs for the scalar evolution analyzer.
	* testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-{10, 30, 31, 32, 33, 34,
	35, 36}.c.alldd: Expected outputs for the data dependence analyzer.
	* testsuite/gcc.dg/tree-ssa-chrec/tree-ssa-scev.exp: New file.
	* testsuite/lib/scantree.exp (diff-tree-dumps): New procedure.
	* ChangeLog.lno: New file.
