+2005-03-01 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * cfgloop.c (flow_loop_entry_edges_find, flow_loop_exit_edges_find,
+ flow_loop_pre_header_scan, flow_loop_pre_header_find,
+ flow_loop_scan): Removed.
+ (flow_loop_dump): Do not dump removed fields.
+ (flow_loop_free): Do not free removed fields.
+ (flow_loops_find): Flags argument removed. Do not call flow_loop_scan.
+ (loop_exit_edge_p): New function.
+ * cfgloop.h (struct loop): Removed fields pre_header, pre_header_edges,
+ num_pre_header_edges, entry_edges, num_entries, exit_edges,
+ num_exits, exits_doms.
+ (LOOP_TREE, LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES,
+ LOOP_EDGES, LOOP_ALL): Removed.
+ (flow_loop_scan): Declaration removed.
+ (loop_exit_edge_p, mark_loop_exit_edges): Declare.
+ * cfgloopmanip.c (create_loop_notes): Do not pass flags to
+ flow_loops_find.
+ * ifcvt.c (mark_loop_exit_edges): Moved to cfgloopanal.c.
+ (if_convert): Call flow_loops_find and flow_loops_free
+ when calling mark_loop_exit_edges.
+ * cfgloopanal.c (mark_loop_exit_edges): Moved from
+ ifcvt.c. Removed the flow_loops_find, flow_loops_free and
+ free_dominance_info calls.
+ * loop-init.c (flow_loops_find): Ditto.
+ * passes.c (rest_of_handle_branch_prob): Ditto.
+ * lambda-code.c (perfect_nestify): Do not call flow_loops_find.
+ * loop-unroll.c (analyze_insns_in_loop): Do not use
+ EDGE_LOOP_EXIT.
+ * predict.c (predict_loops): Do not call flow_loop_scan.
+ Use get_loop_exit_edges.
+ (tree_estimate_probability): Do not pass flags to flow_loops_find.
+ * tree-if-conv.c (bb_with_exit_edge_p): Take loop as argument.
+ Do not use EDGE_LOOP_EXIT.
+ (tree_if_convert_cond_expr, if_convertible_modify_expr_p): Pass loop
+ to bb_with_exit_edge_p.
+ (if_convertible_loop_p): Do not call flow_loop_scan. Use
+ loop->single_exit. Do not use EDGE_LOOP_EXIT. Pass loop
+ to bb_with_exit_edge_p.
+ (combine_blocks): Pass loop to bb_with_exit_edge_p. Do not use
+ EDGE_LOOP_EXIT.
+ * tree-loop-linear.c (linear_transform_loops): Do not call
+ flow_loop_scan. Use loop->single_exit.
+ * tree-vect-analyze.c (vect_analyze_operations): Use loop->single_exit.
+ (vect_analyze_loop_form): Do not call flow_loop_scan.
+ * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Use
+ loop->single_exit.
+ (vect_do_peeling_for_loop_bound): Use loop_preheader_edge and
+ loop->single_exit.
+ * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
+ slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
+ slpeel_tree_duplicate_loop_to_edge_cfg,
+ slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
+ Use loop_preheader_edge and loop->single_exit. Do not call
+ flow_loop_scan.
+
+2005-03-01 Nick Clifton <nickc@redhat.com>
+
+ * config/arm/arm.c (thumb_find_work_register): Check all of the
+ argument registers to see if they are free, and a couple of
+ special cases where the last argument register but can be proved
+ to be available during the function's prologue.
+ (print_multi_reg, arm_compute_save_reg0_reg12_mask,
+ output_return_instruction, emit_multi_reg_push, thumb_pushpop,
+ thumb_unexpanded_epilogue): Use unsigned long as the type for the
+ register bit-mask.
+ (thumb_compute_save_reg_mask): Likewise. Also use
+ thumb_find_work_register() to ensure that there is agreement about
+ which work register is going to be used in the prologue.
+ (thumb_output_function_prologue): Use unsigned long as the type
+ for the register bit-mask. Also delay pushing the link register if
+ other high registers are going to be pushed.
+ (thumb_compute_save_reg_mask, emit_multi_reg_push,
+ print_multi-reg, number_of_first_bit_set, thumb_pushpop): Remove
+ redundant prototypes.
+
+2005-02-28 John David Anglin <dave.anglin#nrc-cnrc.gc.ca>
+
+ PR target/19819
+ * pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
+ and after reload in REG+REG indexed addresses without REG_POINTER
+ set in the base and not set in the index.
+
+2005-02-28 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/linux.h (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX):
+ Don't undefine here.
+ (HANDLE_PRAGMA_PACK_PUSH_POP): Delete.
+ (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC): Likewise.
+ (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
+ (LIB_SPEC, LINK_EH_SPEC, STARTFILE_SPEC, ENDFILE_SPEC,
+ LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED, TARGET_C99_FUNCTIONS):
+ Delete.
+ * config.gcc (sh*-*-linux*): Use config/linux.h.
+
+2005-02-28 Dale Johannesen <dalej@apple.com>
+ Stan Shebs <shebs@apple.com>
+
+ Rewrite of 64-bit Darwin structure-by-value pass/return.
+ * config/rs6000/rs6000.h (CUMULATIVE_ARGS): New fields
+ intoffset, use_stack, named.
+ * config/rs6000/rs6000.c (rs6000_darwin64_function_arg): Remove.
+ (rs6000_darwin64_record_arg_advance_flush): New.
+ (rs6000_darwin64_record_arg_advance_recurse): New.
+ (rs6000_darwin64_record_arg_flush): New.
+ (rs6000_darwin64_record_arg_recurse): New.
+ (rs6000_darwin64_record_arg): New.
+ (rs6000_return_in_memory): Remove AGGREGATE_TYPE_P check.
+ (function_arg_boundary): Handle 128-bit aligned structs.
+ (function_arg_advance): Rewrite darwin64 struct handling.
+ (function_arg): Call rs6000_darwin64_record_arg.
+ (function_arg_partial_nregs): Handle darwin64 structs.
+ (rs6000_darwin64_function_value): Remove.
+ (rs6000_function_value): Call rs6000_darwin64_record_arg.
+
+2005-02-28 Roger Sayle <roger@eyesopen.com>
+
+ PR tree-optimization/20216
+ * tree-chrec.c (tree_fold_factorial): Delete.
+ (tree_fold_binomial): Change argument list to take a return type
+ and change the type of K to unsigned int. Rewrite to avoid explicit
+ evaluation of factorials, and (recursively) calling fold to perform
+ compile-time arithmetic. Return NULL on (internal) overflow.
+ (chrec_evaluate): Change type of K to an unsigned int. Avoid
+ calling tree_fold_binomial unnecessarily. Return chrec_dont_know
+ if any intermediate calculation overflows.
+ (chrec_apply): Update call to chrec_evaluate.
+
+2005-02-28 James E Wilson <wilson@specifixinc.com>
+
+ * config/mips/mips.h (NO_PROFILE_COUNTERS): Define.
+
+2005-02-28 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR c/20245
+ * c-parser.c (c_parser_compound_statement): Return error_mark_node
+ instead of NULL_TREE on error.
+
+2005-02-28 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (EASY_VECTOR_15): Remove.
+ (EASY_VECTOR_15_ADD_SELF): Remove.
+ (num_insns_constant_wide): Not static.
+ (validate_condition_mode): Not static.
+ (toc_relative_expr_p): Not static.
+ (legitimate_indirect_address_p): Not static.
+ (macho_lo_sum_memory_operand): Not static.
+ (invalid_e500_subreg): Not static.
+ (easy_vector_same): Not static.
+ (easy_vector_splat_const): Not static.
+ (RS6000_SYMBOL_REF_TLS_P): Remove.
+ (any_operand): Delete.
+ (any_parallel_operand): Delete.
+ (count_register_operand): Delete.
+ (altivec_register_operand): Delete.
+ (xer_operand): Delete.
+ (s8bit_cint_operand): Delete.
+ (short_cint_operand): Delete.
+ (u_short_cint_operand): Delete.
+ (non_short_cint_operand): Delete.
+ (exact_log2_cint_operand): Delete.
+ (gpc_reg_operand): Delete.
+ (cc_reg_operand): Delete.
+ (cc_reg_not_cr0_operand): Delete.
+ (reg_or_short_operand): Delete.
+ (reg_or_neg_short_operand): Delete.
+ (reg_or_aligned_short_operand): Delete.
+ (reg_or_u_short_operand): Delete.
+ (reg_or_cint_operand): Delete.
+ (reg_or_arith_cint_operand): Delete.
+ (reg_or_add_cint64_operand): Delete.
+ (reg_or_sub_cint64_operand): Delete.
+ (reg_or_logical_cint_operand): Delete.
+ (got_operand): Delete.
+ (got_no_const_operand): Delete.
+ (easy_fp_constant): Delete.
+ (easy_vector_constant): Delete.
+ (easy_vector_constant_add_self): Delete.
+ (zero_constant): Delete.
+ (zero_fp_constant): Delete.
+ (volatile_mem_operand): Delete.
+ (offsettable_mem_operand): Delete.
+ (mem_or_easy_const_operand): Delete.
+ (add_operand): Delete.
+ (non_add_cint_operand): Delete.
+ (logical_operand): Delete.
+ (non_logical_cint_operand): Delete.
+ (mask_operand): Delete.
+ (mask_operand_wrap): Delete.
+ (mask64_operand): Delete.
+ (mask64_2_operand): Delete.
+ (and64_operand): Delete.
+ (and64_2_operand): Delete.
+ (and_operand): Delete.
+ (reg_or_mem_operand): Delete.
+ (lwa_operand): Delete.
+ (symbol_ref_operand): Delete.
+ (call_operand): Delete.
+ (current_file_function_operand): Delete.
+ (input_operand): Delete.
+ (rs6000_nonimmediate_operand): Delete.
+ (rs6000_tls_symbol_ref): Delete.
+ (save_world_operation): Delete.
+ (restore_world_operation): Delete.
+ (load_multiple_operation): Delete.
+ (store_multiple_operation): Delete.
+ (vrsave_operation): Delete.
+ (mfcr_operation): Delete.
+ (mtcrf_operation): Delete.
+ (lmw_operation): Delete.
+ (stmw_operation): Delete.
+ (branch_comparison_operator): Delete.
+ (branch_positive_comparison_operator): Delete.
+ (scc_comparison_operator): Delete.
+ (trap_comparison_operator): Delete.
+ (boolean_operator): Delete.
+ (boolean_or_operator): Delete.
+ (min_max_operator): Delete.
+ * config/rs6000/rs6000.h (RS6000_SYMBOL_REF_TLS_P): Move to here.
+ (EASY_VECTOR_15): Moved to here.
+ (EASY_VECTOR_15_ADD_SELF): Move to here.
+ (PREDICATE_CODES): Delete.
+ * config/rs6000/rs6000-protos.h: Delete predicate functions.
+ Declare functions no longer static.
+ * config/rs6000/predicates.md: New.
+ * config/rs6000/rs6000.md: Include predicates.md
+
+2005-02-28 Kazu Hirata <kazu@cs.umass.edu>
+
+ * calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN.
+ (emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and
+ REG_ALWAYS_RETURN.
+ * cfgrtl.c (need_fake_edge_p): Likewise.
+ * combine.c (distribute_notes): Likewise.
+ * emit-rtl.c (try_split): Likewise.
+ * recog.c (peephole2_opimize): Likewise.
+ * reg-notes.def (ALWAYS_RETURN): Remove.
+ * rtl.h (LCT_ALWAYS_RETURN): Remove.
+ * tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN.
+ * tree.h (ECF_ALWAYS_RETURN): Remove.
+
+2005-02-28 Roger Sayle <roger@eyesopen.com>
+
+ PR middle-end/19874
+ * tree-ssa.c (tree_ssa_useless_type_conversion_1): A conversion
+ between different machine modes is never a "useless" conversion.
+
+2005-02-28 Geert Bosch <bosch@gnat.com>
+
+ PR ada/15977
+ * doc/contrib.texi: List contributors for Ada front end
+
+2005-02-28 Paolo Bonzini <bonzini@gnu.org>
+
+ * simplify-rtx.c (simplify_unary_operation_1,
+ simplify_const_unary_operation): New, extracted from...
+ (simplify_unary_operation): ... this one.
+ (simplify_binary_operation_1,
+ simplify_const_binary_operation): New, extracted from...
+ (simplify_binary_operation): ... this one.
+ * rtl.h (simplify_const_unary_operation,
+ simplify_const_binary_operation): Add prototypes.
+
+2005-02-28 Julian Brown <julian@codesourcery.com>
+
+ * config/elfos.h: Revert my patch from 2005-02-25 since it broke
+ building libjava and caused PR regression/20228.
+
2005-02-28 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/17383