OSDN Git Service

2006-12-10 Daniel Berlin <dberlin@dberlin.org>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 2f8638f..cef245c 100644 (file)
@@ -1,8 +1,371 @@
+2006-12-10  Daniel Berlin  <dberlin@dberlin.org>
+
+       * tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
+       (tree_pointer_compare): Remove.
+
+2006-12-10  Zdenek Dvorak <dvorakz@suse.cz>
+
+       * tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
+       * loop-unswitch.c (unswitch_loops): Use FOR_EACH_LOOP.
+       * tree-loop-linear.c (linear_transform_loops): Ditto.
+       * tree-ssa-loop-im.c (determine_lsm): Ditto.
+       * tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
+       free_numbers_of_iterations_estimates): Ditto.
+       * tree_ssa_unswitch_loops (tree_ssa_unswitch_loops): Ditto.
+       * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
+       * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
+       * modulo-sched.c (sms_schedule): Ditto.
+       * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables,
+       tree_unroll_loops_completely): Ditto.
+       * predict.c (predict_loops): Ditto.
+       * tree-if-conv.c (main_tree_if_conversion): Ditto.
+       * loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
+       decide_unrolling_and_peeling): Ditto.
+       * cfgloopmanip.c (unloop): Use delete_loop.
+       (place_new_loop): Access larray vector instead of parray.
+       (create_preheaders, force_single_succ_latches,
+       fix_loop_structure): Use FOR_EACH_LOOP and delete_loop..
+       * loop-doloop.c (doloop_optimize_loops): Ditto.
+       * loop-invariant.c (move_loop_invariants): Ditto.
+       * tree-cfg.c (replace_uses_by): Ditto.
+       * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Ditto.
+       * tree-chrec.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
+       Moved to ...
+       * tree.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
+       ... here.
+       * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
+       compute_overall_effect_of_inner_loop, chrec_is_positive): Use
+       get_loop and get_chrec_loop.
+       (number_of_iterations_for_all_loops): Use number_of_loops.
+       (scev_initialize, scev_reset, scev_const_prop): Use FOR_EACH_LOOP.
+       * tree-scalar-evolution.h (get_chrec_loop): New inline function.
+       * cfgloopanal.c (mark_irreducible_loops): Use number_of_loops,
+       and FOR_EACH_LOOP.
+       * tree-chrec.c (evolution_function_is_invariant_rec_p,
+       chrec_convert_1): Use get_loop and get_chrec_loop.
+       * loop-init.c (loop_optimizer_init): Use number_of_loops.
+       (loop_optimizer_init): Use FOR_EACH_LOOP.
+       * tree-vectorizer.c (vect_loops_num): Removed.
+       (vectorize_loops): Store number of loops locally.  Use
+       FOR_EACH_LOOP and get_loop.
+       * tree-vectorizer.h (vect_loops_num): Removed.
+       * tree-data-ref.c (get_number_of_iters_for_loop): Use get_loop.
+       (find_data_references_in_loop): Do not set parallel_p.
+       * tree-data-ref.h: Do not declare VEC(loop_p).
+       * cfgloop.c (flow_loops_dump, mark_single_exit_loops,
+       verify_loop_structure): Use FOR_EACH_LOOP.
+       (flow_loops_free): Use FOR_EACH_LOOP, free larray vector.
+       (initialize_loops_parallel_p): Removed.
+       (flow_loops_find): Push the loops into a vector.
+       (delete_loop): New function.
+       (cancel_loop): Use delete_loop.
+       * cfgloop.h: Declare VEC(loop_p).
+       (struct loop): Remove parallel_p field.
+       (struct loops): Replace num and parray field by larray vector.
+       Remove shared_headers field.
+       (delete_loop): Declare.
+       (get_loop, get_loops, number_of_loops, fel_next, fel_init,
+       FOR_EACH_LOOP): New.
+       * doc/loop.tex: Document new accessor functions.
+
+2006-12-10  Andrew MacLeod  <amacleod@redhat.com>
+
+       * common.opt (-ftree-lrs): Remove live range splitting option.
+       * makefile.in: Add tree-ssa-coalesce.o and reduce header dependancies.
+       * opts.c (decode_options): Remove flag_tree_live_range_split.
+       * tree-flow.h (struct var_ann_d): Rename fields from root_ to base_.
+       * tree-flow-inline.h (single_imm_use_p): New.  Check for single use.
+       * tree-outof-ssa.c: Remove header files which aren't needed.
+       (SSANORM_*): Remove flags.
+       (print_exprs_edge, coalesce_abnormal_edges, coalesce_phi_operands, 
+       coalesce_result_decls_and_copies, coalesce_asm_operands): Remove.
+       (coalesce_ssa_name): Move to tree-ssa-coalesce.c.
+       (assign_vars): Use Basevar instead of root_var structure.
+       (replace_def_variable): Dont do anything if def is replaceable.
+       (remove_ssa_form): Integrate functional changes.
+       (rewrite_out_of_ssa): Remove live-range_split option.
+       * tree-ssa-coalesce.c: New File for ssa-name coalescing.
+       (coalesce_cost): Calculate the cost of a coalesce.
+       (coalesce_cost_bb): Calculate the coalesce cost within a BB.
+       (coalesce_cost_edge): Calculate the coalesce cost on an edge.
+       (pop_cost_one_pair): Remove the best coalesce with cost 1 from the list.
+       (pop_best_coalesce): Remove the best coalesce from the list.
+       (coalesce_pair_map_hash): Calculate coalesce pair hash.
+       (coalesce_pair_map_eq): Compare 2 coalesce pairs for hash function.
+       (create_coalesce_list): Create a coalesce list object.
+       (delete_coalesce_list): Free a coalesce list object.
+       (find_coalesce_pair): Find matching pair in the coalesce list.
+       (add_cost_one_coalesce): Add a coalesce to the "cost one" list.
+       (add_coalesce): Add a coalesce to the coalesce list.
+       (compare_pairs): Comparision function to determine pair sorted order.
+       (num_coalesce_pairs): Number of coalesced pairs.
+       (first_coalesce_pair, end_coalesce_pair_p, next_coalesce_pair):
+       Coalesce pair iterator functions.
+       (sort_coalesce_list): Sort coalesce pairs in order of expense.
+       (dump_coalesce_list): Show coalesce list.
+       (ssa_conflicts_new): Create an SSA conflict graph.
+       (ssa_conflicts_delete): Delete an SSA conflict graph.
+       (ssa_conflicts_test_p): Test for conflicts.
+       (ssa_conflicts_add_one): Add a single conflict.
+       (ssa_conflicts_add): Add a conflict pair.
+       (ssa_conflicts_merge): Merge conflicts.
+       (struct live_track_d): Struct for tracking live partitions.
+       (new_live_track): Create new live_track object.
+       (delete_live_track): Delete a live_track object.
+       (live_track_remove_partition): Remove a partition from the live list.
+       (live_track_add_partition): Add a partition from the live list.
+       (live_track_clear_var): Take VAR from the live list.
+       (live_track_live_p): Is var live?
+       (live_track_process_use): Make var come alive.
+       (live_track_process_def): Make var go dead, add conflicts.
+       (live_track_init): Initialize to a live on exit set.
+       (live_track_clear_base_vars): Clear live partitions.
+       (build_ssa_conflict_graph): Build a conflict graph.
+       (print_exprs): Common debug output routine.
+       (abnormal_corrupt): Output info about a failed coalesce across an
+       abnormal edge.
+       (fail_abnormal_edge_coalesce): Output info about a failed MUST_COALESCE.
+       (create_outofssa_var_map): Create a var map and coalesce list.
+       (attempt_coalesce): Coalesce a pair.
+       (coalesce_partitions): Coalesce all pairs in a coalesce list.
+       (coalesce_ssa_name): Entry point.  Determine what ssa_names to coalesce.
+       * tree-ssa-live.c: Remove header files which aren't needed.
+       (var_map_base_init): New.  Initialize a basevar list.
+       (var_map_base_fini): New.  Finish a basevar list.
+       (init_var_map): Initialize new fields.
+       (delete_var_map): Free new fields.
+       (var_union): Use renamed fields.
+       (compact_var_map): Remove.
+       (partition_to_view_init): Use renamed fields, change order of an if.
+       (partition_view_fini): Use renamed fields.
+       (partition_view_normal): Create basevar list if requested.
+       (partition_view_bitmap): Create a view based on a bitmap of partitions.
+       (change_partition_var): Use renamed fields.
+       (create_ssa_var_map): Remove.
+       (tpa_init, tpa_remove_partition, tpa_delete, tpa_compact,
+       root_var_init): Remove.
+       (partition_pair_map_hash, partition_pair_map_eq, create_coalesce_list,
+       delete_coalesce_list, find_partition_pair, coalesce_cost, add_coalesce,
+       compare_pairs, num_coalesce_pairs, first_partition_pair,
+       end_partition_pair_p, next_partition_pair, sort_coalesce_list,
+       pop_best_coalesce, add_conflicts_if_valid, set_if_valid,
+       build_tree_conflict_graph, coalesce_tpa_members, dump_coalesce_list,
+       tpa_dump): Moved to tree-ssa-coalesce.c and/or renamed there.
+       (dump_var_map): Use renamed fields.
+       * tree-ssa-live.h (struct  _var_map): Modify fields.
+       (partition_to_var, version_to_var, var_to_partition): Use renamed 
+       fields.
+       (basevar_index): New.  Index of the base variable of a partition.
+       (num_basevars): New.  Number of unique base variables in partition map.
+       (register_ssa_partition): Use renamed fields.
+       (struct tree_partition_associator_d): Remove.
+       (tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
+       tpa_find_tree, tpa_decompact, root_var_init, root_var_num,
+       root_var, root_var_first_partition, root_var_next_partition,
+       root_var_dump, root_var_delete, root_var_remove_partition, 
+       root_var_find, root_var_compact, root_var_decompact): Remove.
+       (struct partition_pair, struct coalesce_list_d): Moved to 
+       tree-ssa-coalesce.c
+       * tree-ssa-ter.c: Remove header files which aren't needed.
+
+2006-12-10  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * cse.c: (struct cse_basic_block_data): Remove LAST field.
+       (struct branch_path): Remove BRANCH and TAKEN fields. Add new
+       BB field.
+       (cse_visited_basic_blocks): New static bitmap.
+       (cse_end_of_basic_block, cse_basic_block): Remove.
+       (cse_find_path, cse_dump_path, cse_prescan_path,
+       cse_extended_basic_block): New static functions.
+       (cse_insn): Don't CSE over setjmp calls.  Use the CFG to find
+       basic block boundaries.  Don't record jump equivalences here.
+       Update the CFG after doing in-place replacement of the SET_SRC.
+       (cse_main): Rewrite.  Look for extended basic block headers
+       and call cse_extended_basic_block on them until all paths that
+       start at this header are exhausted.
+       (rest_of_handle_cse): Verify that the CFG is incrementally updated
+       and correct after cse_main.
+       Don't call delete_trivially_dead_insns, let cfgcleanup do that.
+       (rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
+       (pass_cse): Add TODO_verify_flow.
+       (pass_cse2): Likewise.
+
+2006-12-10  Rask Ingemann Lambertsen  <rask@sygehus.dk>
+
+       * reload1.c (choose_reload_regs): Don't set byte offset when
+       resolving subregs of hard regs.
+
+2006-12-09  Zack Weinberg  <zackw@panix.com>
+
+       * c-opts.c (c_common_parse_file): Unconditionally give a warning,
+       suitable for the language, if set_yydebug is true.
+       * c-pragma.h: Define enum pragma_omp_clause here.  Don't define
+       YYDEBUG or declare yydebug.
+       * c-parser.c (yydebug, enum pragma_omp_clause): Delete.
+
+2006-12-09  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c: Update copyright.
+       * cgraph.h: Likewise
+       (cgraph_update_pending_function): Remove prototype.
+       * cgraphunit.c: Update copyright; update overall comment.
+       (cgraph_assemble_pending_functions): Make local.
+
+2006-12-09  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
+
+       * haifa-sched.c (schedule_block): Remove excessive sanity check.
+
+2006-12-08  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+
+       * config/spu/spu-protos.h (spu_split_immediate): Renamed from
+       spu_split_address.
+       (cpat_const_p, gen_cpat_const): Add.
+       * config/spu/spu.c (immediate_class): New enum.
+       (cpat_info, classify_immediate): New.
+       (print_operand): Use S, D, T instead of F, G, H.  Use
+       classify_immediate.  Handle cpat cases.
+       (spu_split_immediate):  Renamed from spu_split_address.  Split all
+       immediates that can be split.
+       (immediate_load_p): Use classify_immediate.
+       (spu_legitimate_constant_p): Accept everything except some cases of
+       CONST_VECTOR.
+       (spu_expand_move): Use spu_split_immedate.
+       (fsmbi_const_p): Use classify_immediate.
+       (cpat_const_p): New.
+       (gen_cpat_const: New.
+       * config/spu/constraints.md (j,k,l): New constraints for cpat
+       instructions.
+       * config/spu/spu.md (unnamed splitter): Change address splitter to
+       handle all immediates.
+       (_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
+       instructions.
+       (cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
+       when possible.
+
+2006-12-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/30039
+       * pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
+       patterns.  Correct length of high:DI instruction sequence.
+
+2006-12-08  Mike Stump  <mrs@apple.com>
+
+       * config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
+       libgcc with -mmacosx-version-min=10.4.
+       * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
+       G4 for 10.5+ unless doing kernel builds.
+
+2006-12-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/30120
+       * reg-stack.c (convert_regs_entry): Mark current argument passing
+       registers as live.
+
+       * config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
+       of float arguments in x87 registers.
+
+2006-12-08  John David Anglin  <dave.anglin.@nrc-cnrc.gc.ca>
+
+       * pa.h (LEGITIMATE_CONSTANT_P): Simplify.
+
+2006-12-08  Mark Shinwell  <shinwell@codesourcery.com>
+
+       * recog.c (mode_dependent_address_p): Identify pre-increment,
+       pre-decrement, post-increment and post-decrement addressing as always
+       being mode-dependent.
+       * config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
+       * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
+       * config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
+       PRE_INC and POST_INC checks.
+       * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
+       PRE_INC, POST_DEC and POST_INC cases.
+       * config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
+       Delete POST_INC and PRE_DEC cases.
+       * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
+       no-op.
+       * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
+       no-op.
+       * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
+       PRE_INC and PRE_DEC cases.
+       * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
+       (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+       * config/vax/vax.c (vax_mode_dependent_address_p): Delete
+       auto-increment cases.
+       * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
+       auto-increment cases.
+       * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
+
+2006-12-08  Andrew MacLeod  <amacleod@redhat.com>
+
+       * Makefile.in: Add new file tree-ssa-ter.c.
+       * tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table,
+       free_temp_expr_table, add_value_to_version_list,
+       add_value_to_partition_list, remove_value_from_partition_list,
+       add_dependence, check_replaceable, finish_expr, mark_replaceable,
+       kill_expr, kill_virtual_exprs, find_replaceable_in_bb,
+       find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
+       * tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
+       prototypes.
+       * tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
+       (struct value_expr_d): Remove.
+       (struct temp_expr_table_d): Rename fields, add explicit vector of
+       replaceable expressions instead of sharing.  Change value_expr_p's to
+       bitmap.  Delete free_list.
+       (new_temp_expr_table): Rename fields, count number of ssa_names in
+       each partition.
+       (free_temp_expr_table): Rename field, free new fields.
+       (new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
+       add_info_to_list, remove_value_from_list): Delete.
+       (version_to_be_replaced_p): New.  Is an ssa-name replaceable?
+       (make_dependent_on_partition): New.  Set bit in version list, allocating
+       a bitmap if need be.
+       (add_to_partition_kill_list): New.  Set bit in the partition list,
+       allocating a bitmap if need be.
+       (remove_from_partition_kill_list): New.  Remove a bit from the
+       partition list, free the bitmap if it is empty.
+       (add_dependence): Use renamed field, cleanup.  Don't add a dependence
+       on partitions with only one member.
+       (is_replaceable_p): New.  Split out replaceability check from
+       check_replaceable.
+       (process_replaceable): New.  Code split from check_replaceable.
+       (check_replaceable): Removed.
+       (finished_with_expr): Renamed from finish_expr.
+       (kill_expr): Use renamed fields and less parameters.
+       (kill_virtual_exprs): Less parameters.
+       (mark_replaceable): Use renamed fields.
+       (find_replaceable_in_bb): Use renamed fields, cleanup.
+       (find_replaceable_exprs): Use renamed routines, cleanup.
+       (dump_replaceable_exprs): Don't go past end of ssa_names list.
+       (debug_ter): New.  Debug routine to dump state.
+
+2006-12-08  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.c (effective_address_32bit_p): Return true for
+       anything involving the GOT.
+       (bfin_adjust_cost): Don't take the REGNO of a MEM.
+       (trapping_loads_p): Look inside the pattern of an insn to find the
+       SET.
+       * config/bfin/bfin.md (attr "type"): Add movcc.
+       (insn_reservation "alu"): Likewise.
+       (movsicc_insn1, movsicc_insn2): Change type to movcc.
+
 2006-12-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        * config/spu/spu-c.c (spu_build_overload_builtin): Delete.
        (spu_resolve_overloaded_builtin): Check for non scalar instead
-       of vector type and check the function call argument type also for non scalar.
+       of vector type and check the function call argument type also for
+       non scalar.
        Call build_function_call instead of spu_build_overload_builtin.
 
 2006-12-07  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
        (struct gcc_target): Add record_gcc_switches and
        record_gcc_switches_section fields.
        * target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a
-        default definition.
+       default definition.
        (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default
        definition.
        * toplev.c (print_single_switch): Simplify by providing a
        (print_to_asm_out_file): New function.
        (print_to_stderr): New function.
        (init_asm_output): If flag_record_gcc_switches is set then if
-        the target supports recording the switches then emit them into
-        the assembler output file, otherwise tell the user that the
-        switch is not supported.
+       the target supports recording the switches then emit them into
+       the assembler output file, otherwise tell the user that the
+       switch is not supported.
        * varasm.c (eld_record_gcc_switches): New function.  Example
        handler for the record_gcc_switches target hook.
        * doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new
        (gfc_add_modify_stmt): New macro.
        * fortran/f95-lang.c (lang_tree_node): Handle gimple statements.
 
-       2006-11-02  Aldy Hernandez  <aldyh@redhat.com>
-
-       * ada/ada-tree.h (lang_tree_node): Handle gimple tuples.
-       * ada/trans.c (gnat_gimplify_expr): Replace MODIFY_EXPR with
-       GIMPLE_MODIFY_STMT.
-
        2006-11-01  Aldy Hernandez  <aldyh@redhat.com>
 
        * Merge from mainline at revision 118200.