OSDN Git Service

* tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 28e537e..74416ef 100644 (file)
@@ -1,3 +1,920 @@
+2005-06-07  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
+       (thread_stats): New local variable.
+       (redirect_edges): Increment count of threaded edges.
+       (thread_through_all_blocks): Initialize thread_stats.
+       Display number of threaded jumps if TDF_STATS is enabled.
+
+2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
+
+       * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
+       the current bit index with no modulo.
+
+2005-06-07  Sebastian Pop  <pop@cri.ensmp.fr>
+
+       PR 18403 and meta PR 21861.
+       * Makefile.in (tree-chrec.o): Depend on CFGLOOP_H and TREE_FLOW_H.
+       * tree-chrec.c: Include cfgloop.h and tree-flow.h.
+       (evolution_function_is_invariant_rec_p,
+       evolution_function_is_invariant_p): New.
+       (chrec_convert): Use an extra parameter AT_STMT for refining the
+       information that is passed down to convert_step.  Integrate the 
+       code that was in count_ev_in_wider_type.
+       * tree-chrec.h (count_ev_in_wider_type): Removed.
+       (chrec_convert): Modify its declaration.
+       (evolution_function_is_invariant_p): Declared.
+       (evolution_function_is_affine_p): Use evolution_function_is_invariant_p.
+       * tree-flow.h (can_count_iv_in_wider_type): Renamed convert_step.
+       (scev_probably_wraps_p): Declared.
+       * tree-scalar-evolution.c (count_ev_in_wider_type): Removed.
+       (follow_ssa_edge_in_rhs, interpret_rhs_modify_expr):
+       Use an extra parameter AT_STMT for refining the information that is
+       passed down to convert_step.
+       (follow_ssa_edge_inner_loop_phi, follow_ssa_edge,
+       analyze_scalar_evolution_1): Initialize AT_STMT with the current
+       analyzed statement.
+       (instantiate_parameters_1): Don't know yet how to initialize AT_STMT.
+       * tree-ssa-loop-ivopts.c (idx_find_step): Update the use of 
+       can_count_iv_in_wider_type to use convert_step.
+       * tree-ssa-loop-niter.c (can_count_iv_in_wider_type_bound): Move 
+       code that is independent of the loop over the known iteration
+       bounds to convert_step_widening, the rest is moved to
+       proved_non_wrapping_p.
+       (scev_probably_wraps_p): New.
+       (can_count_iv_in_wider_type): Renamed convert_step.
+       * tree-vrp.c (adjust_range_with_scev): Take an extra AT_STMT parameter.
+       Use scev_probably_wraps_p for computing init_is_max.
+       (vrp_visit_assignment): Pass the current analyzed statement to 
+       adjust_range_with_scev.
+       (execute_vrp): Call estimate_numbers_of_iterations for refining the 
+       information provided by scev analyzer.
+
+2005-06-07  Eric Christopher  <echristo@redhat.com>
+
+       * config/mips/predicates.md (sleu_operand): Use
+       IN_RANGE to specify range of operand.
+
+2005-06-07  Steven Bosscher  <stevenb@suse.de>
+
+       PR tree-optimization/21847
+       * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
+       -fnon-call-exceptions, also mark statements inherently
+       necessary if they may throw.
+
+2005-06-07  Adrian Straetling  <straetling@de.ibm.com>
+
+       * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
+       ("type"): Add "sem" to 'type' attribute.
+       ("memory_barrier", "*memory_barrier", "sync_compare_and_swapdi",
+       "sync_compare_and_swapsi", "sync_compare_and_swap_ccdi",
+       "sync_compare_and_swap_ccsi", "*sync_compare_and_swap_ccdi",
+       "*sync_compare_and_swap_ccsi"): New patterns.
+       * config/s390/2064.md: ("z_sem"): New insn_reservation.
+       * config/s390/2084.md: ("x_sem"): New insn_reservation.
+       * config/s390/s390.c: (s390_compare_emitted): New global variable.
+       (s390_emit_compare): Do not emit comparison again after cas.
+       * config/s390/s390.h (s390_compare_emitted): Declare.
+
+2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
+
+       * sbitmap.h (sbitmap_iterator, sbitmap_iter_init,
+       sbitmap_iter_cond, sbitmap_iter_next): New.
+       * bt-load.c, cfganal.c, combine.c, ddg.c, flow.c,
+       modulo-sched.c, sbitmap.c, sched-rgn.c, tree-into-ssa.c,
+       tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Update
+       uses of EXECUTE_IF_SET_IN_SBITMAP to the new style.
+
+2005-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       * tree-ssa-address.c: New file.
+       * Makefile.in (tree-ssa-address.o): Add.
+       * expr.c (expand_expr_real_1): Do not handle REF_ORIGINAL on
+       INDIRECT_REFs.  Handle TARGET_MEM_REFs.
+       * tree-eh.c (tree_could_trap_p): Handle TARGET_MEM_REFs.
+       * tree-flow.h (struct mem_address): New.
+       (struct affine_tree_combination): Moved from tree-ssa-loop-ivopts.c.
+       (create_mem_ref, addr_for_mem_ref, get_address_description,
+       maybe_fold_tmr, multiplier_allowed_in_address_p,
+       multiply_by_cost):  Declare.
+       * tree-mudflap.c (mf_xform_derefs_1): Handle TARGET_MEM_REFs.
+       * tree-pretty-print.c (dump_generic_node): Ditto.
+       * tree-ssa-loop-im.c (for_each_index): Ditto.
+       * tree-ssa-loop-ivopts.c (may_be_unaligned_p,
+       find_interesting_uses_address): Ditto.
+       (rewrite_address_base, build_addr_strip_iref): Removed.
+       (struct affine_tree_combination): Moved to tree-flow.h.
+       (get_ref_tag, copy_ref_info): New functions.
+       (rewrite_use_address): Produce TARGET_MEM_REFs.
+       (tree_ssa_iv_optimize): Do not call update_ssa
+       and rewrite_into_loop_closed_ssa.
+       (tree_to_aff_combination): Use build_fold_addr_expr instead of
+       build_addr_strip_iref.
+       (unshare_aff_combination): New function.
+       (fold_affine_sum): Removed.
+       (get_computation_at): Use get_computation_aff.  Unshare the result.
+       (get_computation_aff, multiplier_allowed_in_address_p): New function.
+       (multiply_by_cost): Exported.
+       (get_address_cost): Use multiplier_allowed_in_address_p.
+       * tree-ssa-operands.c (get_tmr_operands): New function.
+       (get_expr_operands): Handle TARGET_MEM_REFs.
+       * tree.c (copy_node_stat): Copy annotations for TARGET_MEM_REFs.
+       (build): Handle 7 arguments.
+       (build7_stat): New function.
+       * tree.def (TARGET_MEM_DEF): New.
+       * tree.h (REF_ORIGINAL): Removed.
+       (TMR_SYMBOL, TMR_BASE, TMR_INDEX, TMR_STEP, TMR_OFFSET, TMR_ORIGINAL,
+       TMR_TAG, build7): New macros.
+       (build7_stat, tree_mem_ref_addr, copy_mem_ref_info): Declare.
+       * tree-ssa-ccp.c (fold_stmt_r): Call maybe_fold_tmr.
+       * doc/c-tree.texi: Document TARGET_MEM_REF.
+       * doc/tree-ssa.texi: Add TARGET_MEM_REF to gimple grammar.
+
+2005-06-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/21946
+       * dwarf2out.c (add_loc_descr_op_piece): New function.
+       (multiple_reg_loc_descriptor, concat_loc_descriptor,
+       loc_descriptor): Use it.
+       * var-tracking.c: Include regs.h and expr.h.
+       (emit_note_insn_var_location): Skip over pieces where offset
+       is smaller than previous offset plus previous piece mode size.
+       Optimize adjacent hard registers or memory locations.
+       * Makefile.in (var-tracking.o): Depend on $(REGS_H) and $(EXPR_H).
+
+2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * c-typeck.c (c_finish_if_stmt): Use void_type_node as type
+       for COND_EXPR.
+       * gimplify.c (gimplify_cond_expr): No need to fix up the
+       type of COND_EXPRs.
+
+2005-06-07  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * tree-ssa.c (tree_ssa_useless_type_conversion_1): Fix
+       comments.
+
+2005-06-07  Geoffrey Keating  <geoffk@apple.com>
+
+       * config/rs6000/host-darwin.c (segv_handler): Widen the possible
+       'stwux' instructions that are considered to be stack decrements.
+
+       * rtlanal.c (subreg_offset_representable_p): Handle objects
+       with holes.
+
+2005-06-06  Uros Bizjak  <uros@kss-loka.si>
+
+       * mode-switching.c (optimize_mode_switching): Fix n_exprs parameter
+       in call to pre_edge_lcm.
+
+2005-06-06  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/linux-unwind.h (SH_DWARF_FRAME_XD0): Remove for SH5.
+       (SH_DWARF_FRAME_PR, SH_DWARF_FRAME_GBR, SH_DWARF_FRAME_MACL)
+       (SH_DWARF_FRAME_MACH, SH_DWARF_FRAME_PC, SH_DWARF_FRAME_FPUL):
+       Likewise.
+       (SH_DWARF_FRAME_FP0, SH_DWARF_FRAME_FPSCR): Define to the correct
+       dwarf register number for SHmedia.
+       (shmedia_fallback_frame_state): New.
+       (MD_FALLBACK_FRAME_STATE_FOR): Define to it for SH5.
+
+       * config/sh/linux.h (FUNCTION_PROFILER): Provide SHMEDIA version.
+
+2005-06-06  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * c-lex.c (lex_string): Use XOBFINISH.
+       * collect2.c (extract_string, dump_file): Likewise.
+       * dbxout.c (dbxout_finish_complex_stabs): Likewise.
+       * gcc.c (init_spec, build_search_list, convert_filename, 
+       set_collect_gcc_options, do_spec_2, do_spec_1, main): Likewise.
+       * genpreds.c (write_predicate_subfunction): Likewise.
+       * genflags.c (main): Likewise.
+       * read-rtl.c (mode_attr_index, apply_macro_to_string, 
+       join_c_conditions, read_quoted_string, read_braced_string, 
+       read_rtx_1): Likewise.
+       * stringpool.c (ggc_alloc_string): Likewise.
+       * tlink.c (obstack_fgets, recompile_files): Likewise.
+
+2005-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+       * intl.h (G_): New macro.
+       * rtl-error.c (error_for_asm, warning_for_asm): Use gmsgid
+       instead of msgid for argument name.
+       * tree-ssa.c (warn_uninit): Likewise.
+       * c-parser.c (c_parser_error): Likewise.
+       * config/rs6000/rs6000-c.c (SYNTAX_ERROR): Likewise.
+       * config/darwin-c.c (BAD): Likewise.
+       * config/c4x/c4x-c.c (BAD): Likewise.
+       * c-pragma.c (GCC_BAD, GCC_BAD2): Likewise.
+       * c-errors.c (pedwarn_c99, pedwarn_c90): Likewise.
+       * c-common.c (c_parse_error): Likewise.
+       * diagnostic.c (diagnostic_set_info, verbatim, inform, warning,
+       warning0, pedwarn, error, sorry, fatal_error, internal_error):
+       Likewise.
+       (fnotice): Use cmsgid instead of msgid for argument name.
+       * gcov.c (fnotice): Likewise.
+       * protoize.c (notice): Likewise.
+       * final.c (output_operand_lossage): Likewise.
+       * gcc.c (fatal, notice): Likewise.
+       (error): Use gmsgid instead of msgid for argument name.
+       * collect2.c (notice, fatal_perror, fatal): Use cmsgid instead
+       of msgid for argument name.
+       (error): Use gmsgid instead of msgid for argument name.
+       * c-decl.c (locate_old_decl, implicit_decl_warning): Use G_()
+       instead of N_().
+       * c-typeck.c (readonly_error, convert_for_assignment): Likewise.
+       * tree-inline.c (inline_forbidden_p_1): Likewise.
+       * ABOUT-GCC-NLS: Require gettext 0.14.5 or later.  Mention the new
+       conventions for marking translations.
+       * doc/install.texi: Mention gettext 0.14.5 or later requirement.
+
+       * tree-chrec.c (reset_evolution_in_loop): Use build3 instead of
+       build2.
+
+       * fold-const.c (operand_equal_p): Don't return 1, if element
+       chains for 2 VECTOR_CSTs are not the same length.
+
+       PR regression/21897
+       * fold-const.c (fold_ternary) <case BIT_FIELD_REF>: Don't crash if
+       not all VECTOR_CST elements are given.
+
+       * combine.c (try_combine): Use hard_regno_nregs array instead of
+       HARD_REGNO_NREGS macro.
+       * config/rs6000/rs6000.c (rs6000_split_multireg_move,
+       rs6000_register_move_cost, rs6000_memory_move_cost): Likewise.
+       * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
+
+2005-06-06  Daniel Berlin  <dberlin@dberlin.org>
+
+       * tree-ssa-reassoc.o: New.
+       (OBJS-common): Add tree-ssa-reassoc.o
+       * timevar.def: Add TV_TREE_REASSOC
+       * tree-optimize.c (pass_reassoc): Add call.
+       * tree-pass.h (pass_reassoc): Add.
+       * tree-ssa-reassoc.c: New file.
+
+2005-06-06  Eric Christopher  <echristo@redhat.com>
+
+       target/21927
+       * expr.c (do_store_flag): Remove check for non-negative BRANCH_COST.
+
+2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard with
+       HAVE_GAS_MAX_SKIP_P2ALIGN.
+       (HAVE_AS_DWARF2_DEBUG_LINE): Remove.
+
+2005-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * Makefile.in (mips-tfile.o): Add $(srcdir)/../include prefix to
+       getopt.h dependency.
+       (mips-tdump.o): Likewise.
+
+2005-06-06  Jan Hubicka  <jh@suse.cz>
+
+       * predict.c (tree_predict_edge): Don't drop useless predictions;
+       check that it is not called too late in the game.
+       (gate_estimate_probability): New gate.
+       (pass_profile): Gate.
+       * tree-mudflap.c (mf_build_check_statement_for): Do not drop
+       predictions; update CFG instead.
+       * cfgrtl.c (rtl_verify_flow_info): Check that predcitions are consumed.
+
+2005-06-06  Jie Zhang  <jie.zhang@analog.com>
+
+       * config.gcc (bfin*-uclinux*): New.
+       * config/bfin/uclinux.h: New file.
+
+2005-06-06  Ben Elliston  <bje@au.ibm.com>
+
+       * doc/md.texi (Insn Splitting): Fix some wording.
+
+2005-06-05  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.c (rs6000_emit_swdivsf): New function.
+       (rs6000_emit_swdivdf): New function.
+       * config/rs6000/rs6000.md (fres): New pattern.
+       (divsf3): Add approximation through rs6000_emit_swdivsf.
+       (fred): New pattern.
+       (divdf3): Add approximation through rs6000_emit_swdivdf.
+       * config/rs6000/rs6000-protos.h (rs6000_emit_swdivsf): Declare.
+       (rs6000_emit_swdivdf): Declare.
+       * config/rs6000/rs6000.opt (mswdiv): New option.
+       * doc/invoke.texi (RS/6000 and PowerPC Options): Document mswdiv.
+
+2005-06-05  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimization/21846
+       * tree-cfg.c (replace_uses_by): Update information stored at loops.
+       * tree-flow.h (substitute_in_loop_info): Declare.
+       * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
+       Ensure that chrec_dont_know and chrec_known have a type.
+       * tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
+
+2005-06-05  Steven Bosscher  <stevenb@suse.de>
+
+       * config/i386/i386.c (x86_use_loop): Remove.
+       * config/i386/i386.h (x86_use_loop): Remove extern decl.
+       (TARGET_USE_LOOP): Remove.
+       * config/i386/i386.md (doloop_end, doloop_end_internal): Remove.
+       Also remove related define_splits.
+
+2005-06-05  Dorit Nuzman  <dorit@il.ibm.com>
+
+       * tree-flow.h (stmt_ann_d): Move aux to ...
+       (tree_ann_common_d): ... here.
+       * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
+       move_computations_stmt, schedule_sm): Update references to
+       aux.
+       * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
+       * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
+       call to set_stmt_info.
+       (vect_transform_loop): Likewise.
+       * tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
+       Likewise.
+
+       * tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
+       bool.
+       (vect_mark_relevant): Takes two additional arguments - live_p and
+       relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
+       (vect_stmt_relevant_p): Differentiate between a live stmt and a
+       relevant stmt. Return two values = live_p and relevant_p.
+       (vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
+       vect_stmt_relevant_p with additional arguments. Phis are no longer
+       put into the worklist (analyzed seperately in analyze_scalar_cycles).
+       (vect_determine_vectorization_factor): Also check for LIVE_P, because a
+       stmt that is marked as irrelevant and live, cause it's only used out
+       side the loop, may need to be vectorized (e.g. reduction).
+       (vect_analyze_operations): Examine phis. Call
+       vectorizable_live_operation for for LIVE_P stmts. Check if
+       need_to_vectorize.
+       (vect_analyze_scalar_cycles): Update documentation. Don't fail
+       vectorization - just classify the scalar cycles created by the loop
+       phis. Call vect_is_simple_reduction.
+       (vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
+       * tree-vect-transform.c (vect_create_index_for_vector_ref): Update
+       call to set_stmt_info.
+       (vect_get_vec_def_for_operand): Code reorganized - the code that
+       classifies the type of use was factored out to vect_is_simple_use.
+       (vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
+       additional arguments.
+       (vectorizable_assignment): Likewise. Also make sure the stmt is relevant
+       and computes a loop_vec_def.
+       (vectorizable_operation, vectorizable_load, vectorizable_condition):
+       Likewise.
+       (vectorizable_live_operation): New.
+       (vect_transform_stmt): Handle LIVE_P stmts.
+       * tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
+       STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
+       (new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
+       (vect_is_simple_use): Determine the type of the def and return it
+       in a new function argument. Consider vect_reduction_def and
+       vect_induction_def, but for now these are not supported.
+       (vect_is_simple_reduction): New. Empty for now.
+       * tree-vectorizer.h (vect_def_type): New enum type.
+       (_stmt_vec_info): Added new fields - live and _stmt_vec_info.
+       (STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
+       (vect_is_simple_use): New arguments added to function declaration.
+       (vect_is_simple_reduction): New function declaration.
+       (vectorizable_live_operation): New function declaration.
+
+       * tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
+       (vect_can_advance_ivs_p): Likewise.
+       * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
+
+2005-06-05  Eric Christopher  <echristo@redhat.com>
+
+       * config/mips/mips.c (mips_rtx_costs): Remove unused variable.
+
+2005-06-05  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       PR target/21914
+       * config/mmix/mmix.md ("*movdicc_real_foldable")
+       ("*movdfcc_real_foldable", "*bCC_foldable")
+       ("*bCC_inverted_foldable"): Specify DImode for register being
+       compared.
+
+2005-06-04  Roger Sayle  <roger@eyesopen.com>
+
+       * reg-stack.c (struct block_info_def): Correct grammar typo.
+       (compensate_edge): Clean-up.  Perform as little work as possible
+       when src and dest stacks match.  Avoid modifying block_info.
+       Reorder and simplify assertion checks.  Avoid unnecessary copying
+       of regstack structure.
+       (convert_regs_1): Set the done flag here...
+       (convert_regs_2): ... instead of here.
+
+2005-06-04  Dale Johannesen  <dalej@apple.com>
+
+       * config/rs6000/rs6000.c (no_global_regs_above): New.
+       (rs6000_emit_prologue):  Use it; cosmetic formatting fixes.
+       (rs6000_emit_epilogue):  Use it; cosmetic formatting fixes.
+       (rs6000_conditional_register_usage): Don't put Darwin PIC
+       register in global_regs.
+       (rs6000_stack_info):  Don't set lr_save_p just because Darwin 
+       PIC reg used.
+       (rs6000_emit_prologue):  Save LR in R0 around Darwin PIC setup,
+       if not done by lr_save_p.
+       * config/rs6000/rs6000.md (insnv1_internal1):  Back out 05-18 patch.
+       Use rotate instead of ashift.
+       (call_indirect_nonlocal_sysv):  Prefer CTR to LR.
+       (call_value_indirect_nonlocal_sysv):  Ditto.
+
+2005-06-04  Jan Hubicka  <jh@suse.cz>
+
+       * cgraphunit.c (cgraph_reset_node): Break out from ...
+       (cgraph_finalize_function): ... here.
+       (cgraph_finalize_compilation_unit): Reset nodes where backend
+       removed the body.
+
+2005-06-04  Richard Henderson  <rth@redhat.com>
+
+       PR target/21888
+       * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
+       until we've passed initial ldgp.
+
+2005-06-04  Daniel Berlin  <dberlin@dberlin.org>
+
+       * cfgexpand.c (expand_one_var): Use DECL_HAS_VALUE_EXPR_P.
+       * dwarf2out.c (loc_descriptor_from_tree_1): Ditto.
+       * expr.c (expand_var): Ditto.   
+       * function.c (gimplify_parameters): Use SET_DECL_VALUE_EXPR too.
+       * gimplify.c (gimplify_decl_expr): Ditto.
+       (gimplify_expr): Ditto.
+       * tree-mudflap.c (mf_decl_eligible_p): Use DECL_HAS_VALUE_EXPR_P.
+       * tree.c (value_expr_for_decl): New.
+       (print_value_expr_statistics): New.
+       (init_ttree): Init value_expr_for_decl.
+       (decl_value_expr_lookup): New.
+       (decl_value_expr_insert): Ditto.
+       (copy_node_stat): Copy DECL_VALUE_EXPR status.
+       * tree.h (DECL_VALUE_EXPR): Use hashtable.
+       (SET_DECL_VALUE_EXPR): New.
+       (DECL_HAS_VALUE_EXPR_P): New.
+
+2005-06-04  Steven Bosscher  <stevenb@suse.de>
+
+       * lcm.c: Move all mode-switching related functions from here...
+       * mode-switching.c: ...to this new file.
+       * doc/passes.texi: Update accordingly.
+
+       * basic-block.h (label_value_list): Remove extern decl.
+       * cfgrtl.c (label_value_list): Remove.
+       (can_delete_label_p): Don't look at it.
+       * cfgcleanup.c (cleanup_cfg): Don't free it.
+
+       * common.opt: Don't refer to non-existing flag_alias_check.
+
+2005-06-04  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power5.
+
+2005-06-04  Kazu Hirata  <kazu@codesourcery.com>
+
+       * function.c (prologue, epilogue, sibcall_epilogue): Change
+       their types to VEC(int,heap)*.
+       (free_after_compilation): Free the three vectors above.
+       (init_function_for_compilation, record_insns, contains,
+       prologue_epilogue_contains, sibcall_epilogue_contains,
+       reposition_prologue_and_epilogue_notes): Use VEC instead of
+       VARRAY.  (init_function_once): Remove.
+       * function.h: Remove the prototype for init_function_once.
+       * toplev.c (backend_init): Don't call init_function_once.
+
+2005-06-04  Jan Hubicka  <jh@suse.cz>
+
+       * predict.c (tree_predict_edge): Do not predict entry edge and
+       single succestor edge.
+
+2005-06-04  Joseph S. Myers  <joseph@codesourcery.com>
+
+       PR c/21873
+       * c-typeck.c (push_init_level): Don't pop levels without braces if
+       implicit == 1.
+
+2005-06-03  Sebastian Pop  <pop@cri.ensmp.fr>
+       
+       * tree-data-ref.c (compute_self_dependence): New function.
+       (compute_all_dependences): Use it.
+
+2005-06-03  Geoffrey Keating  <geoffk@apple.com>
+
+       * c-parser.c (c_parser_parms_declarator): Don't use chainon().
+       (c_parser_expr_list): Don't use chainon().
+
+       * config/darwin.h (LINK_SPEC): Pass -syslibroot to linker
+       when -isysroot passed.
+
+2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
+
+       PR c/21879
+       * c-decl.c (start_function): Restore label_context_stack_se and
+       label_context_stack_vm  if returning with an error.
+
+2005-06-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * configure.ac: Check declaration for asprintf, needed by
+       libiberty.h. 
+       * configure: Regenerate.
+       * config.in: Likewise.
+
+2005-06-03  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-dom.c (record_edge_info): Use last_basic_block to
+       allocate info array.
+       * tree-vrp.c (extract_range_from_unary_expr): Set resulting
+       range to varying in cast expressions that change
+       TYPE_PRECISION.
+
+2005-06-03  Eric Christopher  <echristo@redhat.com>
+
+       * config/mips/mips.opt: Add RejectNegative to divide-breaks and
+       divide-traps.
+
+2005-06-03  Jan Hubicka  <jh@suse.cz>
+
+       * basic-block.h (remove_predictions_associated_with_edge): Declare.
+       * cfg.c (remove_edge): Use it.
+       * predict.c (remove_predictions_associated_with_edge): New function.
+
+2005-06-03  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
+       Clear call_realy_used_regs[r2] when ABI_AIX.
+
+2005-06-03  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       PR middle-end/21858
+       * fold-const.c (fold_binary): Fix type mismatches in folding
+       of comparisons.
+
+2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
+
+       * cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
+       typos.
+
+2005-06-03  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * collect2.c (maybe_unlink): Use unlink_if_ordinary.
+
+2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * reload1.c (reload): Revert my previous patch.
+
+2005-06-03  Nick Clifton  <nickc@redhat.com>
+
+       * config/arm/semi.h (ASM_SPEC): Fix typo passing -mfloat-abi to
+       assembler.
+
+2005-06-03  Kazu Hirata  <kazu@codesourcery.com>
+
+       PR tree-optimization/21849
+       * tree-ssa-copy.c (dump_copy_of): Call sbitmap_zero.
+
+2005-06-02  Richard Henderson  <rth@redhat.com>
+
+       * Makefile.in (tree-vect-generic.o): New.
+       (OBJS-common, GTFILES, s-gtype): Add it.
+       * tree-complex.c (build_replicated_const, vector_inner_type,
+       vector_last_type, vector_last_nunits, build_word_mode_vector_type,
+       elem_op_func, tree_vec_extract, do_unop, do_binop, do_plus_minus,
+       do_negate, expand_vector_piecewise, expand_vector_parallel, 
+       expand_vector_addition, expand_vector_operation, 
+       type_for_widest_vector_mode, expand_vector_operations_1, 
+       gate_expand_vector_operations, expand_vector_operations, 
+       pass_lower_vector_ssa): Move to tree-vect-generic.c.
+       (tree_lower_complex): Rename from tree_lower_operations.
+       (pass_lower_complex): Rename from pass_pre_expand.
+       * tree-vect-generic.c: New file.
+       * tree-pass.h (pass_lower_complex): Rename from pass_pre_expand.
+       (pass_lower_vector): New.
+       * tree-optimize.c (init_tree_optimization_passes): Update to match.
+
+2005-06-02  Richard Henderson  <rth@redhat.com>
+
+       * modulo-sched.c (doloop_register_get): Protect against 
+       doloop_end not defined.
+
+2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
+
+       * config/sh/sh.c (general_movsrc_operand,
+       general_movdst_operand, arith_reg_operand, arith_reg_dest,
+       logical_reg_operand, int_gpr_dest, fp_arith_reg_operand,
+       fp_arith_reg_dest, arith_operand, arith_reg_or_0_operand,
+       xor_operand, cmp_operand, logical_operand, and_operand,
+       fpscr_operand, fpul_operand, symbol_ref_operand,
+       commutative_float_operator, noncommutative_float_operator,
+       unary_float_operator, binary_float_operator,
+       binary_logical_operator, equality_comparison_operator,
+       greater_comparison_operator, less_comparison_operator,
+       shift_operator, logical_operator, target_reg_operand,
+       target_operand, mextr_bit_offset, extend_reg_operand,
+       trunc_hi_operand, extend_reg_or_0_operand, minuend_operand,
+       general_extend_operand, ua_address_operand,
+       cache_address_operand, inqhi_operand, sh_rep_vec, sh_1el_vec,
+       sh_const_vec, ua_offset, sh_register_operand, cmpsi_operand,
+       shift_count_reg_operand, shift_count_operand,
+       unaligned_load_operand): Move to ...
+       * config/sh/predicates.md: ... here.
+       * config/sh/sh.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES):
+       Remove.
+
+2005-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * tree.c (build_common_builtin_nodes): Fix the return type on
+       __builtin_memcmp.
+
+2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * tree-ssa-loop-ivopts.c (build_addr_strip_iref): Remove.
+       (find_interesting_uses_address): Use build_fold_addr_expr instead.
+       (strip_offset_1): Likewise.
+       (tree_to_aff_combination): Likewise.
+
+2005-06-02  DJ Delorie  <dj@redhat.com>
+
+       * convert.c (convert_to_pointer): Avoid recursion if no conversion
+       is needed.
+
+2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * tree-chrec.c (chrec_fold_plus_1): Ensure we build
+       binary operations with the correct types.
+       * tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
+       for all computation.
+
+2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
+
+       * tree-vrp.c, config/arm/arm.md, config/arm/arm1020e.md,
+       config/rs6000/rs6000.md: Fix comment typos.  Follow splling
+       conventions.
+       * doc/install.texi: Fix a typo.
+
+2005-06-02  Jan Hubicka  <jh@suse.cz>
+
+       * cgraphunit.c (cgraph_function_and_variable_visibility): Extern
+       inline functions are not local.
+
+2005-06-02  Kazu Hirata  <kazu@codesourcery.com>
+
+       * gimplify.c (gimplify_ctx): Change the type of case_labels to
+       VEC from VARRAY.
+       (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
+       of case_labels.
+
+2005-06-02  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * c-typeck.c (build_indirect_ref): Build INDIRECT_REF
+       with correct type.
+
+2005-06-02  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/s390.c (s390_add_execute): Do not handle out-of-pool
+       execute templates.
+       (s390_dump_pool): Likewise.
+       (s390_mainpool_start, s390_mainpool_finish): Likewise.
+       (s390_chunkify_start): Likewise.
+       (s390_dump_execute): Remove.
+       (s390_reorg): Handle out-of-pool execute templates.
+
+2005-06-02  Adrian Straetling  <straetling@de.ibm.com>
+
+       * optabs.c: (expand_bool_compare_and_swap): Emit barrier after
+         unconditional jump.
+
+2005-06-02  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (cgraph_node): Maintain master clones.
+       (cgraph_remove_node): Likewise.
+       (availability_names): New static variable.
+       (dump_cgraph_node): Dump availability.
+       (dump_cgraph_varpool_node): Likewise.
+       (cgraph_is_master_clone, cgraph_master_clone,
+       cgraph_function_body_availability,
+       cgraph_variable_initializer_availability): New functions.
+       * cgraph.h (availability): New enum.
+       (struct cgraph_node): Add master_clone.
+       (cgraph_is_master_clone, cgraph_master_clone,
+       cgraph_function_body_availability,
+       cgraph_variable_initializer_availability): Declare.
+       * cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
+       (cgraph_remove_unreachable_nodes): Remove unreachable nodes.
+       * ipa-inline.c (cgraph_decide_inlining): Do not call
+       cgraph_remove_unreachable_nodes.
+
+       * cgraphunit.c (cgraph_function_and_variable_visibility): Fix typo in
+       previous patch.
+
+2005-06-02  Diego Novillo  <dnovillo@redhat.com>
+
+       PR 21582
+       * tree-vrp.c (nonnull_arg_p): New.
+       (get_value_range): Call it.
+
+2005-06-02  Eric Christopher  <echristo@redhat.com>
+
+       * config/mips/mips.h (processor_type): Remove PROCESSOR_DEFAULT,
+       add PROCESSOR_MAX.
+       (mips_rtx_cost_data): New datatype.
+       (MEMORY_MOVE_COST): Use data from structure.
+       (BRANCH_COST): Ditto.
+       (LOGICAL_OP_NON_SHORT_CIRCUIT): Define to zero.
+       * config/mips/mips.md (cpu): Rework for processor_type changes.
+       * config/mips/mips.c (mips_cost): New variable.
+       (DEFAULT_COSTS): Define.
+       (mips_rtx_cost_data): New.
+       (mips_rtx_costs): Use. Minor formatting changes. Use COSTS_N_INSNS
+       for NEG cost. Add support for FLOAT, UNSIGNED_FLOAT, FIX,
+       FLOAT_EXTEND, FLOAT_TRUNCATE, and SQRT.
+       (override_options): Set cost data.
+       (mips_register_move_cost): Formatting changes.
+       (bdesc_arrays): Use PROCESSOR_MAX.
+       (mips_init_builtins): Ditto.
+
+2005-06-02  Diego Novillo  <dnovillo@redhat.com>
+
+       PR 21765
+       * doc/invoke.texi: Document -ftree-vrp.
+
+2005-06-02  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-optimization/21734
+       * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the
+       phi_result when current_def is not available.
+       (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not
+       available.      
+
+2005-06-02  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.c (rs6000_insn_valid_within_doloop): New.
+       (TARGET_INSN_VALID_WITHIN_DOLOOP): Define.
+
+2005-06-02  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-vrp.c (has_assert_expr, maybe_add_assert_expr): Remove.
+
+2005-06-02  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (dump_cgraph_node): Print new flags.
+       (dump_cgraph_varpool_node): Likewise.
+       (decide_variable_is_needed): Initialize externally_visible flag.
+       * cgraph.h (cgraph_local_info): Add externally_visible flag.
+       (cgraph_varpool_node): Likewise.
+       (cgraph_function_flags_ready): Declare.
+       * cgraph.c (cgraph_mark_local_functions): Rename to ...
+       (cgraph_function_and_variable_visibility) ... this one; handle
+       externally_visible flags.
+       (decide_is_function_needed): Set externally_visible flag.
+       (cgraph_finalize_function): Deal properly with early cleanups.
+       (cgraph_optimize): Update call of
+       cgraph_function_and_variable_visibility.
+
+2005-06-02 Steven Bosscher  <stevenb@suse.de>
+          Mostafa Hagog <mustafa@il.ibm.com>
+
+       * cfgloop.h (doloop_condition_get): Make external.
+       * loop-doloop.c (doloop_condition_get): Generalize to make it
+       usable in modulo-sched.c.
+       * modulo-sched.c (doloop_register_get): Use
+       doloop_condition_get instead of duplicating it.
+
+2005-06-02  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * reload1.c (reload): Undo 2005-04-20 change.  Make sure we detect
+       the correct set of init_insns that need deletion.
+       * local-alloc.c (update_equiv_regs): When substituting sole definition
+       into sole use of a reg, delete it from liveness information.
+
+2005-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.h (TARGET_FPU_DOUBLE): Use MASK_SH4.
+
+2005-06-01  Diego Novillo  <dnovillo@redhat.com>
+
+       PR 14341, PR 21332, PR 20701, PR 21029, PR 21086, PR 21090
+       PR 21289, PR 21348, PR 21367, PR 21368, PR 21458.
+       * fold-const.c (invert_tree_comparison): Make extern.
+       * tree-flow.h (enum value_range_type): Move to tree-ssa-propagate.
+       (struct value_range_def): Limewise.
+       (get_value_range): Remove.
+       (dump_value_range): Remove.
+       (dump_all_value_ranges): Remove.
+       (debug_all_value_ranges): Remove.
+       (vrp_evaluate_conditional): Declare.
+       * tree-ssa-propagate.c (struct prop_stats_d): Add field
+       num_pred_folded.
+       (substitute_and_fold): Add argument use_ranges_p.
+       Update all callers.
+       If use_ranges_p is true, call fold_predicate_in to fold
+       predicates using range information.
+       Ignore ASSERT_EXPRs.
+       Change debugging output to only show statements that have been
+       folded.
+       (replace_phi_args_in): Move debugging output code from
+       substitute and fold.
+       (fold_predicate_in): New local function.
+       * tree-ssa-propagate.h (enum value_range_type): Move from
+       tree-flow.h.
+       (struct value_range_d): Likewise.
+       Add field 'equiv'. 
+       (value_range_t): Rename from value_range.
+       * tree-vrp.c (found_in_subgraph): Rename from found.
+       (get_opposite_operand): Remove.
+       (struct assert_locus_d): Declare.
+       (assert_locus_t): Declare.
+       (need_assert_for): Declare.
+       (asserts_for): Declare.
+       (blocks_visited): Declare.
+       (vr_value): Declare.
+       (set_value_range): Add argument 'equiv'.
+       Don't drop to VARYING ranges that cover all values in the
+       type.
+       Make deep copy of equivalence set 'equiv'.
+       (copy_value_range): New local function.
+       (set_value_range_to_undefined): New local function.
+       (compare_values): Return -2 if either value has overflowed.
+       (range_includes_zero_p): New local function.
+       (extract_range_from_assert): Flip the predicate code if the
+       name being asserted is on the RHS of the predicate.
+       Avoid creating unnecessary symbolic ranges if the comparison
+       includes another name with a known numeric range.
+       Update the equivalnce set of the new range when asserting
+       EQ_EXPR predicates.
+       (extract_range_from_ssa_name): Update the equivalence set of
+       the new range with VAR.
+       (extract_range_from_binary_expr): Also handle TRUTH_*_EXPR.
+       If -fwrapv is used, set the resulting range to VARYING if the
+       operation overflows.  Otherwise, use TYPE_MIN_VALUE and
+       TYPE_MAX_VALUE to represent -INF and +INF.
+       Fix handling of *_DIV_EXPR.
+       (extract_range_from_unary_expr): Handle MINUS_EXPR and
+       ABS_EXPR properly by switching the range around if necessary.
+       (extract_range_from_comparison): New local function.
+       (extract_range_from_expr): Call it.
+       (adjust_range_with_scev): Do not adjust the range if using
+       wrapping arithmetic (-fwrapv).
+       (dump_value_range): Also show equivalence set.
+       Show -INF and +INF for TYPE_MIN_VALUE and TYPE_MAX_VALUE.
+       (build_assert_expr_for): Also build ASSERT_EXPR for EQ_EXPR.
+       (infer_value_range): Change return value to bool.
+       Add arguments 'comp_code_p' and 'val_p'.
+       Do not attempt to infer ranges from statements that may throw.
+       Store the comparison code in comp_code_p.
+       Store the other operand to be used in the predicate in val_p.
+       (dump_asserts_for): New.
+       (debug_asserts_for): New.
+       (dump_all_asserts): New.
+       (debug_all_asserts): New.
+       (register_new_assert_for): New.
+       (register_edge_assert_for): New.
+       (find_conditional_asserts): New.
+       (find_assert_locations): New.
+       (process_assert_insertions_for): New.
+       (process_assert_insertions): New.
+       (insert_range_assertions): Initialize found_in_subgraph,
+       blocks_visited, need_assert_for and asserts_for.
+       Call find_assert_locations and process_assert_insertions.
+       (remove_range_assertions): Add more documentation.
+       (vrp_initialize): Change return type to void.
+       Do not try to guess if running VRP is worth it.  
+       (compare_name_with_value): New.
+       (compare_names): New.
+       (vrp_evaluate_conditional): Add argument 'use_equiv_p'.  If
+       use_equiv_p is true, call compare_names and
+       compare_name_with_value to compare all the ranges for every
+       name in the equivalence set of the predicate operands.
+       Update all callers.
+       (vrp_meet): Try harder not to derive a VARYING range.
+       If two values meet, the resulting equivalence set is the
+       intersection of the two equivalence sets.
+       (vrp_visit_phi_node): Call copy_value_range to get the current
+       range information of the LHS.
+       (vrp_finalize): Create a value vector representing all the
+       names that ended up with exactly one value in their range.
+       Call substitute_and_fold.
+       (execute_vrp): Document equivalence sets in ranges.
+       * tree.h (SSA_NAME_VALUE_RANGE): Remove.
+       (struct tree_ssa_name): Remove field value_range.
+       (invert_tree_comparison): Declare.
+
+2005-06-01  Daniel Berlin  <dberlin@dberlin.org>
+
+       Fix PR tree-optimization/21839
+
+       * gimplify.c (zero_sized_field_decl): New function.
+       (gimplify_init_ctor_eval): Use it.
+
+2005-06-01  Josh Conner <jconner@apple.com>
+
+       PR 21478
+       * gimplify.c (gimplify_init_constructor): Don't spill initializer
+       to read-only memory if it's sparse.
+
+2005-06-01  Ramana Radhakrishnan  <ramana@codito.com>
+
+       * doc/rtl.texi: Remove references to NOTE_INSN_SETJMP. 
+       Add documentation for REG_SETJMP
+
 2005-06-01  Richard Guenther  <rguenth@gcc.gnu.org>
 
        * stmt.c (expand_case): Use build_int_cst.
        
        * Makefile.in: Update dependencies.
        
-
 2005-06-01  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * config/i386/cygming.h (NO_PROFILE_COUNTERS): Define.