X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=d74518635b6f1556cb2378e5a04bbb09803a5a84;hp=23d71ec8b9ee396839816deb17a2fa5067b44adf;hb=83ae9b01ce9a1bf67beba922bd48b1b3e91c673e;hpb=008f96d836284b65ab4bc3ee81b62d2bd84ba452 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 23d71ec8b9e..f4f535b21a6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1867 @@ +2010-07-14 Dave Korn + + * config/i386/cygming-crtend.c (__FRAME_END__): Replace attribute + "unused" with attribute "used". + (__JCR_END__): Likewise. + * config/i386/cygming-crtbegin.c (__EH_FRAME_BEGIN__): Add missing + "used" attribute. + (__JCR_LIST__): Replace attribute "unused" with attribute "used". + +2010-07-14 Richard Guenther + + * lto-streamer-in.c (maybe_fixup_handled_component): Remove. + (maybe_fixup_decls): Likewise. + (input_gimple_stmt): Do not fixup anything. + * lto-streamer-out.c (output_gimple_stmt): Make sure all + non-automatic variable uses are wrapped inside a MEM_REF. + +2010-07-14 Richard Henderson + + * passes.c (rest_of_decl_compilation): Do not call assemble_variable + for functions. + * varasm.c (assemble_variable): Remove early exit for functions; + assert that we're given a variable. + +2010-07-14 Jie Zhang + + * config/arm/cortex-a8.md (cortex_a8_alu): Don't use + cortex_a8_default when neon_type is not none. + +2010-07-14 Bernd Schmidt + + * lower-subreg.c (subreg_context): New static bitmap. + (decompose_multiword_subregs): Allocate and free it. + (find_decomposable_subregs): Set a bit in it for a register that + occurs in a subreg that changes mode but not size. + (can_decompose_p): Test it instead of non_decomposable_context. + +2010-07-14 Richard Guenther + + PR tree-optimization/44824 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Use + is_gimple_mem_ref_addr. + (tree_ssa_forward_propagate_single_use_vars): Do not propagate + non-decl_address_invariant_p addresses. + +2010-07-14 Bernd Schmidt + + * reload.c (find_reloads): Revert code to penalize small register + classes that was brought in with the IRA merge. + +2010-07-14 Richard Guenther + + * tree-ssa-ccp.c (fold_const_aggregate_ref): Handle MEM_REF + as base of ARRAY_REFs. + +2010-07-14 Richard Guenther + + PR middle-end/44930 + * tree-pretty-print.c (do_niy): Do not print a newline. + +2010-07-14 Bernd Schmidt + + * ira-int.h (struct ira_object): New. + (ira_object_t): New typedef. Add DEF_VEC_P and DEF_VEC_ALLOC_P + for it. + (struct ira_allocno): Remove members min, max, + conflict_allocno_array, conflict_id, conflict_allocno_array_size, + conflict_allocnos_num and conflict_vec_p. Add new member object. + (OBJECT_CONFLICT_ARRAY, OBJECT_CONFLICT_VEC_P, + OBJECT_NUM_CONFLICTS, OBJECT_CONFLICT_ARRAY_SIZE, + OBJECT_CONFLICT_HARD_REGS, OBJECT_TOTAL_CONFLICT_HARD_REGS, + OBJECT_MIN, OBJECT_MAX, OBJECT_CONFLICT_ID): Renamed from + ALLOCNO_CONFLICT_ALLOCNO_ARRAY, ALLOCNO_CONFLICT_VEC_P, + ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_CONFLICT_ALLOCNO_ARRAY_SIZE, + ALLOCNO_CONFLICT_HARD_REGS, ALLOCNO_TOTAL_CONFLICT_HARD_REGS) + ALLOCNO_MIN, ALLOCNO_MAX, and ALLOCNO_CONFLICT_ID; now operate on + an ira_object_t rather than ira_allocno_t. All uses changed. + (ira_object_id_map): Renamed from ira_conflict_id_allocno_map; now + contains a vector of ira_object_t; all uses changed. + (ira_objects_num): Declare variable. + (ira_create_allocno_object): Declare function. + (ira_conflict_vector_profitable_p): Adjust prototype. + (ira_allocate_conflict_vec): Renamed from + ira_allocate_allocno_conflict_vec; first arg now ira_object_t. + (ira_allocate_object_conflicts): Renamed from + ira_allocate_allocno_conflicts; first arg now ira_object_t. + (struct ira_object_iterator): New. + (ira_object_iter_init, ira_object_iter_cond, FOR_EACH_OBJECT): New. + (ira_allocno_conflict_iterator): Renamed member allocno_conflict_vec_p + to conflict_vec_p. All uses changed. + (ira_allocno_conflict_iter_init, ira_allocno_conflict_iter_cond): + Changed to take into account that conflicts are now tracked for + objects. + * ira-conflicts.c (OBJECTS_CONFLICT_P): Renamed from + CONFLICT_ALLOCNO_P. Args changed to accept ira_object_t. All + uses changed. + (allocnos_conflict_p): New static function. + (collected_conflict_objects): Renamed from collected_allocno_objects; + now a vector of ira_object_t. All uses changed. + (build_conflict_bit_table): Changed to take into account that + conflicts are now tracked for objects. + (process_regs_for_copy, propagate_copies, build_allocno_conflicts) + (print_allocno_conflicts, ira_build_conflicts): Likewise. + * ira-color.c (assign_hard_reg, setup_allocno_available_regs_num) + setup_allocno_left_conflicts_size, allocno_reload_assign, + fast_allocation): Likewise. + * ira-lives.c (make_hard_regno_born, make_allocno_born) + process_single_reg_class_operands, process_bb_node_lives): Likewise. + * ira-emit.c (modify_move_list, add_range_and_copies_from_move_list): + Likewise. + * ira-build.c (ira_objects_num): New variable. + (ira_object_id_map): Renamed from ira_conflict_id_allocno_map; now + contains a vector of ira_object_t; all uses changed. + (ira_object_id_map_vec): Corresponding change. + (object_pool): New static variable. + (initiate_allocnos): Initialize it. + (finish_allocnos): Free it. + (ira_create_object, ira_create_allocno_object, create_allocno_objects): + New functions. + (ira_create_allocno): Don't set members that were removed. + (ira_set_allocno_cover_class): Don't change conflict hard regs. + (merge_hard_reg_conflicts): Changed to take into account that + conflicts are now tracked for objects. + (ira_conflict_vector_profitable_p, ira_allocate_conflict_vec, + allocate_conflict_bit_vec, ira_allocate_object_conflicts, + compress_conflict_vecs, remove_low_level_allocnos, ira_flattening, + setup_min_max_allocno_live_range_point, allocno_range_compare_func, + setup_min_max_conflict_allocno_ids, ): Likewise. + ((add_to_conflicts): Renamed from add_to_allocno_conflicts, args changed + to ira_object_t; all callers changed. + (ira_add_conflict): Renamed from ira_add_allocno_conflict, args changed + to ira_object_t, all callers changed. + (clear_conflicts): Renamed from clear_allocno_conflicts, arg changed + to ira_object_t, all callers changed. + (conflict_check, curr_conflict_check_tick): Renamed from + allocno_conflict_check and curr_allocno_conflict_check_tick; all uses + changed. + (compress_conflict_vec): Renamed from compress_allocno_conflict_vec, + arg changed to ira_object_t, all callers changed. + (create_cap_allocno): Call ira_create_allocno_object. + (finish_allocno): Free the corresponding object. + (sort_conflict_id_map): Renamed from sort_conflict_id_allocno_map; all + callers changed. Adjusted for dealing with objects. + (ira_build): Call create_allocno_objects after ira_costs. Adjusted for + dealing with objects. + * ira.c (ira_bad_reload_regno_1): Adjusted for dealing with objects. + + * ira-int.h (struct live_range): Rename allocno member to object and change + type to ira_object_t. + (struct ira_object): New member live_ranges. + (struct ira_allocno): Remove member live_ranges. + (ALLOCNO_LIVE_RANGES): Remove. + (OBJECT_LIVE_RANGES): New macro. + (ira_create_live_range, ira_copy_live_range_list, + ira_merge_live_range_list, ira_live_ranges_intersect_p, + ira_finish_live_range, ira_finish_live_range_list): Adjust declarations. + * ira-build.c (ira_create_object): Initialize live ranges here. + (ira_create_allocno): Not here. + (ira_create_live_range): Rename from ira_create_allocno_live_range, arg + changed to ira_object_t, all callers changed. + (copy_live_range): Rename from copy_allocno_live_range, all callers + changed. + (ira_copy_live_range_list): Rename from ira_copy_allocno_live_range_list, + all callers changed. + (ira_merge_live_ranges): Rename from ira_merge_allocno_live_range_list, + all callers changed. + (ira_live_ranges_intersect_p): Rename from + ira_allocno_live_ranges_intersect_p, all callers changed. + (ira_finish_live_range): Rename from ira_finish_allocno_live_range, all + callers changed. + (ira_finish_live_range_list): Rename from + ira_finish_allocno_live_range_list, all callers changed. + (change_object_in_range_list): Rename from change_allocno_in_range_list, + last arg changed to ira_object_t, all callers changed. + (finish_allocno): Changed to expect live ranges in the allocno's object. + (move_allocno_live_ranges, copy_allocno_live_ranges, + update_bad_spill_attribute, setup_min_max_allocno_live_range_point, + ira_flattening, ira_build): Likewise. + * ira-color.c (allocnos_have_intersected_live_ranges_p, + slot_coalesced_allocno_live_ranges_intersect, + setup_slot_coalesced_allocno_live_ranges, fast_allocation): Likewise. + * ira-conflicts.c (build_conflict_bit_table): Likewise. + * ira-emit.c (add_range_and_copies_from_move_list): Likewise. + * ira-lives.c (make_allocno_born, update_allocno_pressure_excess_length, + make_allocno_dead, create_start_finish_chains, + remove_some_program_points_and_update_live_ranges, + ira_debug_live_range_list): Likewise. + + * ira-int.h (ira_object_conflict_iterator): Rename from + ira_allocno_conflict_iterator. + (ira_object_conflict_iter_init): Rename from + ira_allocno_conflict_iter_init, second arg changed to + * ira.c (check_allocation): Use FOR_EACH_OBJECT_CONFLICT rather than + FOR_EACH_ALLOCNO_CONFLICT. + * ira-color.c (assign_hard_reg, push_allocno_to_stack) + setup_allocno_left_conflicts_size, coalesced_allocno_conflict_p, + ira_reassign_conflict_allocnos, ira_reassign_pseudos): Likewise. + * ira-conflicts.c (print_allocno_conflicts): Likewise. + +2010-07-13 Joern Rennecke + + PR other/44874 + * tree-dump.c (dump_options): Add enumerate_locals entry. + Add TDF_NOID exclusion to all entry. + * tree-dump.h (dump_enumerated_decls): Declare. + * tree-pretty-print.c (dump_generic_node): For TDF_NOID, + Don't display type uid. + (print_declaration): Don't crash on TREE_TYPE (t) == 0. + * tree-pass.h (TDF_ENUMERATE_LOCALS): Define. + * tree-ssa-live.c: Include gimple.h. + (numbered_tree_d): New struct. + (numbered_tree): New typedef. + (DEF_VEC_O (numbered_tree): New. + (DEF_VEC_ALLOC_O (numbered_tree, heap)): Likewise. + (compare_decls_by_uid, dump_enumerated_decls_push): New functions. + (dump_enumerated_decls): Likewise. + * tree-optimize.c (execute_cleanup_cfg_post_optimizing): If comparing + debug info and flag_dump_final_insns, call dump_enumerated_decls. + * tree-cfg.c (dump_function_to_file): Call dump_enumerated_decls. + * Makefile.in (tree-ssa-live.o): Depend on $(GIMPLE_H). + +2010-07-13 Richard Sandiford + + * expmed.h (MAX_BITS_PER_WORD): Move to... + * defaults.h (MAX_BITS_PER_WORD): ...here. + +2010-07-13 DJ Delorie + + * config/h8300/h8300.c (h8300_init_once): Default to + -fstrict_volatile_bitfields. + + * config/sh/sh.c (sh_override_options): Default to + -fstrict_volatile_bitfields. + + * config/rx/rx.c (rx_option_override): New. + + * config/m32c/m32c.c (m32c_override_options): Default to + -fstrict_volatile_bitfields. + +2010-07-13 Nathan Froyd + + * tree.h (build_function_call_expr): Delete. + (build_call_expr_loc_array): New function. + (build_call_expr_loc_vec): New function. + * tree-flow.h (struct omp_region): Change type of ws_args field + to a VEC. + * builtins.c (build_function_call_expr): Delete. + (build_call_expr_loc_array): New function. + (build_call_expr_loc): Call it. Use XALLOCAVEC. + (build_call_expr): Likewise. + (build_call_expr_loc_vec): New function. + * cgraphunit.c (build_cdtor): Call build_call_expr instead of + build_function_call_expr. + * expr.c (emutls_var_address): Likewise. + * varasm.c (emutls_common_1): Likewise. + * omp-low.c (expand_omp_atomic_mutex): Likewise. + (expand_omp_taskreg): Adjust for new type of region->ws_args. + (get_ws_args_for): Return a VEC instead of a tree. + (expand_parallel_call): Call build_call_expr_loc_vec instead of + build_function_call_expr. + * stor-layout.c (self_referential_size): Likewise. + +2010-07-13 Jakub Jelinek + + PR testsuite/44701 + * recog.c (constrain_operands): Allow side-effects in memory + operands if either < or > constraint is used, rather than if + both < and > is used. + +2010-07-13 Richard Guenther + + PR middle-end/44911 + * tree-pretty-print.c (dump_generic_node): Use TDF_SLIM for + MEM_REF pointer type dumping. Avoid recursing for TYPE_DECLs + without name. + +2010-07-13 Kaz Kojima + + PR target/44761 + * mode-switching.c (optimize_mode_switching): Add ATTRIBUTE_UNUSED + to variable emited. + * config/sh/sh.c (sh_expand_epilogue): Remove unused variable. + * config/sh/sh.md (symGOT_load): Likewise. + (symDTPOFF2reg): Likewise. + (symTPOFF2reg): Likewise. + +2010-07-13 Ramana Radhakrishnan + + * expmed.c (MAX_BITS_PER_WORD): Moved to expmed.h. + * expmed.h (MAX_BITS_PER_WORD): Moved from expmed.c. + +2010-07-13 Rainer Orth + + * config/i386/sol2-unwind.h (x86_64_fallback_frame_state): Correct + explanation. + Find ucontext_t * on Solaris 11. + (x86_fallback_frame_state): Handle Solaris 9 multi-threaded pattern. + Handle new Solaris 11 __sighndlr patterns. + +2010-07-13 Jakub Jelinek + + PR debug/44901 + * vec.h (VEC_block_remove): Fix comment. + * tree-ssa-live.c (remove_unused_locals): Don't use + VEC_unordered_remove on local_decls, instead replace a single + vector element in each iteration if at least one element had + to be removed and VEC_truncate at the end. + * omp-low.c (expand_omp_taskreg): Likewise. + +2010-07-13 Manuel López-Ibáñez + + * c-decl.c (finish_function): Fix typo in comment. + +2010-07-12 H.J. Lu + + PR bootstrap/44921 + * postreload.c (move2add_use_add3_insn): Silence gcc warning + on min_regno. + +2010-07-12 Jakub Jelinek + + * tree-vrp.c (simplify_bit_ops_using_ranges): New function. + (simplify_stmt_using_ranges): Use it. + +2010-07-12 Ulrich Weigand + + * config/spu/spu.h (struct spu_builtin_description): Remove FNDECL + member. Do not mark as GTY(()). + * config/spu/spu.c (spu_builtins): Remove FNDECL initializer elements. + (spu_builtin_decls): New static variable. + (spu_builtin_decl): Use it instead of spu_builtins[].fndecl. + (spu_init_builtins): Likewise. + (spu_builtin_mul_widen_even): Likewise. + (spu_builtin_mul_widen_odd): Likewise. + (spu_builtin_mask_for_load): Likewise. + (spu_builtin_vec_perm): Likewise. + * config/spu/spu-c.c: Include "target.h". + (spu_resolve_overloaded_builtin): Call targetm.builtin_decl instead + of using spu_builtins[].fndecl. + +2010-07-12 Richard Sandiford + + * config/mips/mips.c (mips_override_options): Make -mflip-mips16 + imply -minterlink-mips16. + +2010-07-12 Richard Sandiford + + * config/mips/mips.h (mips16_globals): Declare. + (SWITCHABLE_TARGET): Define. + * config/mips/mips.c: Include target-globals.h. + (mips16_globals): New variable. + (mips_set_mips16_mode): Use save_target_globals and + restore_target_globals instead of target_reinit. + +2010-07-12 Richard Sandiford + + * reginfo.c (init_reg_sets): Don't zero globals here. Update comment + to say that the function can be called more than once. + * target-globals.c (save_target_globals): Call init_reg_sets. + +2010-07-12 Richard Sandiford + + * Makefile.in (bb-reorder.o, target-globals.o): Depend on bb-reorder.h + * bb-reorder.h: New file. + * bb-reorder.c (default_target_bb_reorder): New variable. + (this_target_bb_reorder): New conditional variable. + (uncond_jump_length): Redefine as a macro. + * target-globals.h (this_target_bb_reorder): Declare. + (target_globals): Add a bb_reorder field. + (restore_target_globals): Copy the bb_reorder field to + this_target_bb-reorder. + * target-globals.c: Include bb-reorder.h. + (default_target_globals): Initialize the bb_reorder field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (gcse.o, target-globals.o): Depend on gcse.h.. + * gcse.h: New file. + * gcse.c: Include gcse.h. + (default_target_gcse): New variable. + (this_target_gcse): New conditional variable. + (can_copy): Redefine as a macro. + (can_copy_init_p): New macro. + (can_copy_p): Remove can_copy_init_p. + * target-globals.h (this_target_gcse): Declare. + (target_globals): Add a gcse field. + (restore_target_globals): Copy the gcse field to + this_target_gcse. + * target-globals.c: Include gcse.h. + (default_target_globals): Initialize the gcse field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * ira-int.h (target_ira_int): Add x_ira_prohibited_mode_move_regs + and x_ira_prohibited_mode_move_regs_initialized_p. + (ira_prohibited_mode_move_regs): Redefine as a macro. + * ira.c (ira_prohibited_mode_move_regs): Delete. + (ira_prohibited_mode_move_regs_initialized_p): Redefine as a macro. + +2010-07-12 Richard Sandiford + + * reload.h (target_reload): Add x_cached_reg_save_code and + x_cached_reg_restore_code. + * caller-save.c (cached_reg_save_code, cached_reg_restore_code): + Redefine as macros. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on builtins.h. + * builtins.h: New file. + * builtins.c: Include builtins.h. + (default_target_builtins): New variable. + (this_target_builtins): New conditional variable. + (apply_args_mode, apply_result_mode): Redefine as macros. + * target-globals.h (this_target_builtins): Declare. + (target_globals): Add a builtins field. + (restore_target_globals): Copy the builtins field to + this_target_builtins. + * target-globals.c: Include builtins.h. + (default_target_globals): Initialize the builtins field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * expmed.h (alg_code, mult_cost, MULT_COST_LESS, CHEAPER_MULT_COST) + (algorithm, alg_hash_entry, NUM_ALG_HASH_ENTRIES, alg_hash): Moved + from expmed.c. + (target_expmed): Add x_alg_hash and x_alg_hash_used_p. + (alg_hash, alg_hash_used_p): New macros. + * expmed.c (init_expmed): Clear alg_hash if reinitializing. + (alg_code, mult_cost, MULT_COST_LESS, CHEAPER_MULT_COST, algorithm) + (alg_hash_entry, NUM_ALG_HASH_ENTRIES, alg_hash): Moved to expmed.h. + +2010-07-12 Richard Sandiford + + * ira-int.h (target_ira_int): Add x_max_struct_costs_size, x_init_cost, + x_temp_costs, x_op_costs, x_this_op_costs and x_cost_classes. + * ira-costs.c (max_struct_costs_size, init_cost, temp_costs, op_costs) + (this_op_costs, costs_classes): Redefine as macros. + (record_reg_classes): Don't take op_costs as a parameter. + (record_operand_costs): Likewise. Update calls to record_reg_classes. + (scan_one_insn): Update call to record_operand_costs. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on $(IRA_INT_H). + * ira-int.h (ira_max_nregs, ira_important_class_nums): Delete. + (target_ira_int): New structure. + (default_target_ira_int): Declare. + (this_target_ira_int): Declare as a variable or define as a macro. + (ira_reg_mode_hard_regset, ira_register_move_cost) + (ira_may_move_in_cost, ira_may_move_out_cost, ira_class_subset_p) + (ira_non_ordered_class_hard_regs, ira_class_hard_reg_index) + (prohibited_class_mode_regs, ira_important_classes_num) + (ira_important_classes, ira_reg_class_intersect) + (ira_reg_classes_intersect_p, ira_reg_class_super_classes) + (ira_reg_class_union): Redefine as macros. + * ira.h (target_ira): New structure. + (default_target_ira): Declare. + (this_target_ira): Declare as a variable or define as a macro. + (ira_available_class_regs, ira_hard_regno_cover_class) + (ira_reg_class_cover_size, ira_reg_class_cover, ira_class_translate) + (ira_reg_class_nregs, ira_memory_move_cost, ira_class_hard_regs) + (ira_class_hard_regs_num): Redefine as macros. + * ira.c (default_target_ira, default_target_ira_int): New variables. + (this_target_ira, this_target_ira_int): New conditional variables. + (ira_reg_mode_hard_regset, ira_memory_move_cost) + (ira_register_move_cost, ira_may_move_in_cost, ira_may_move_out_cost) + (ira_class_subset_p): Delete. + (no_unit_alloc_regs): Redefine as a macro. + (ira_class_hard_regs, ira_non_ordered_class_hard_regs) + (ira_class_hard_regs_num, ira_class_hard_reg_index) + (ira_available_class_regs): Delete. + (alloc_reg_class_subclasses): Redefine as a macro. + (ira_reg_class_cover_size, ira_reg_class_cover) + (ira_important_classes_num, ira_important_classes) + (ira_important_class_nums, ira_class_translate): Delete. + (cover_class_order): Document the variable's lifetime. + (reorder_important_classes): Don't set ira_important_class_nums. + (ira_reg_class_intersect, ira_reg_classes_intersect_p) + (ira_reg_class_super_classes, ira_reg_class_union) + (ira_hard_regno_cover_class, ira_reg_class_nregs, ira_max_nregs): + Delete. + (setup_reg_class_nregs): Don't set ira_max_regs. + (prohibited_class_mode_regs): Delete. + * target-globals.h (this_target_ira, this_target_ira_int): Declare. + (target_globals): Add ira and ira_int fields. + (restore_target_globals): Copy the ira field to this_target_ira + and the ira_int field to this_target_ira_int. + * target-globals.c: Include ira-int.h. + (default_target_globals): Initialize the ira and ira_int fields. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on $(CFGLOOP_H). + * cfgloop.h (target_cfgloop): New structure. + (default_target_cfgloop): Declare. + (this_target_cfgloop): Declare as a variable or define as a macro. + (target_avail_regs, target_clobbered_regs, target_res_regs) + (target_reg_cost, target_spill_cost): Redefine as macros. + * cfgloopanal.c (default_target_cfgloop): New variable. + (this_target_cfgloop): New conditional variable. + (target_avail_regs, target_clobbered_regs, target_res_regs) + (target_reg_cost, target_spill_cost): Delete. + * target-globals.h (this_target_cfgloop): Declare. + (target_globals): Add a cfgloop field. + (restore_target_globals): Copy the cfgloop field to + this_target_cfgloop. + * target-globals.c: Include cfgloop.h. + (default_target_globals): Initialize the cfgloop field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * regs.h (target_regs): Add x_direct_load, x_direct_store and + x_float_extend_from_mem. + (direct_load, direct_store, float_extend_from_mem): New macros. + * expr.c (direct_load, direct_store, float_extend_from_mem): Delete. + +2010-07-12 Richard Sandiford + + * Makefile.in (LIBFUNCS_H): Add $(HASHTAB_H). + (target-globals.o): Depend on $(LIBFUNCS_H). + * libfuncs.h: Include hashtab.h. + (libfunc_entry): Moved from optabs.c. + (target_libfuncs): New structure. + (default_target_libfuncs): Declare. + (this_target_libfuncs): Declare as a variable or define as a macro. + (libfunc_table): Redefine as a macro. + * optabs.c (default_target_libfuncs): New variable. + (this_target_libfuncs): New conditional variable. + (libfunc_table): Delete. + (libfunc_entry): Moved to optabs.h. + (libfunc_hash): Redefine as a macro. + (hash_libfunc, eq_libfunc): Fix comments. + (init_optabs): Use libfunc_hash to detect cases where the function + has already been called. Clear the hash table instead of + recreating it. + * target-globals.h (this_target_libfuncs): Declare. + (target_globals): Add a libfuncs field. + (restore_target_globals): Copy the libfuncs field to + this_target_libfuncs. + * target-globals.c: Include libfuncs.h. + (default_target_globals): Initialize the libfuncs field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (LIBFUNCS_H): New variable. Use instead of libfuncs.h + in all dependency lists. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on $(EXPR_H) and $(OPTABS_H). + * optabs.h (target_optabs): New structure. + (default_target_optabs): Declare. + (this_target_optabs): Declare as a variable or define as a macro. + (optab_table, convert_optab_table, direct_optab_table): Redefine + as macros. + * optabs.c (default_target_optabs): New variable. + (this_target_optabs): New conditional variable. + (optab_table, convert_optab_table, direct_optab_table): Delete. + * target-globals.h (this_target_optabs): Declare. + (target_globals): Add a optabs field. + (restore_target_globals): Copy the optabs field to + this_target_optabs. + * target-globals.c: Include expr.h and optabs.h. + (default_target_globals): Initialize the optabs field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * flags.h (target_flagstate): Add x_flag_excess_precision. + (flag_excess_precision): Redefine as a macro. + * toplev.c (flag_excess_precision): Delete. + +2010-07-12 Richard Sandiford + + * defaults.h (MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Define if not defined. + * libgcc2.c (MIN_UNITS_PER_WORD): Delete. + * hard-reg-set.h (target_hard_regs): Add x_no_caller_save_reg_set. + (no_caller_save_reg_set): Redefine as a macro. + * reload.h (target_reload): Add x_caller_save_initialized_p and + x_regno_save_mode. + (caller_save_initialized_p): Redefine as a macro. + * caller-save.c (caller_save_initialized_p, no_caller_save_reg_set) + (MAX_MOVE_MAX, MIN_UNITS_PER_WORD): Delete. + (regno_save_mode): Redefine as a macro. + +2010-07-12 Richard Sandiford + + * Makefile.in (expmed.o, target-globals.o): Depend on expmed.h. + * expmed.h: New file. + * expmed.c (default_target_costs): New variable. + (this_target_costs): New conditional variable. + (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost, neg_cost) + (shift_cost, shiftadd_cost, shiftsub0_cost, shiftsub1_cost, mul_cost) + (sdiv_cost, udiv_cost, mul_widen_cost, mul_highpart_cost): Delete. + * target-globals.h (this_target_expmed): Declare. + (target_globals): Add a expmed field. + (restore_target_globals): Copy the expmed field to + this_target_expmed. + * target-globals.c: Include expmed.h. + (default_target_globals): Initialize the expmed field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on reload.h. + * reload.h (target_reload): New structure. + (default_target_reload): Declare. + (this_target_reload): Declare as a variable or define as a macro. + (indirect_symref_ok, double_reg_address_ok): Redefine as macros. + * reload1.c (default_target_reload): New variable + (this_target_reload): New conditional variable. + (indirect_symref_ok, double_reg_address_ok): Delete. + (spill_indirect_levels): Redefine as a macro. + * target-globals.h (this_target_reload): Declare. + (target_globals): Add a reload field. + (restore_target_globals): Copy the reload field to + this_target_reload. + * target-globals.c: Include hard-reg-set.h. + (default_target_globals): Initialize the reload field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * rtl.h (target_rtl): Add x_static_reg_base_value. + * alias.c (static_reg_base_value): Redefine as a macro. + +2010-07-12 Richard Sandiford + + * Makefile.in (reginfo.o): Don't depend on $(GGC_H) or gt-reginfo.h. + (GTFILES): Remove reginfo.c. + * rtl.h (target_rtl): Add x_top_of_stack. + (top_of_stack): New macro. + * reginfo.c: Don't include ggc.h or gt-reginfo.h. + (top_of_stack): Delete. + +2010-07-12 Richard Sandiford + + * regs.h (target_regs): Add x_hard_regs_of_mode, x_contains_reg_of_mode, + x_move_cost, x_may_move_in_cost, x_may_move_out_cost and + x_last_mode_for_init_move_cost. + (have_regs_of_mode, contains_reg_of_mode, move_cost) + (may_move_in_cost, may_move_out_cost): Redefine as macros. + * reginfo.c (have_regs_of_mode, contains_reg_of_mode, move_cost) + (may_move_in_cost, may_move_out_cost): Delete. + (last_mode_for_init_move_cost): Redefine as a macro. + +2010-07-12 Richard Sandiford + + * hard-reg-set.h (target_hard_regs): New structure. + (default_target_hard_regs): Declare. + (this_target_hard_regs): Declare as a variable or define as a macro. + (fixed_regs, fixed_reg_set, call_used_regs, call_really_used_regs) + (call_used_reg_set, call_fixed_reg_set, regs_invalidated_by_call) + (reg_alloc_order, inv_reg_alloc_order, reg_class_contents) + (reg_class_size, reg_class_subclasses, reg_class_subunion) + (reg_class_superunion, reg_names): Redefine as macros. + * reginfo.c (fixed_regs, fixed_reg_set, call_used_regs) + (call_used_reg_set, call_really_used_regs, call_fixed_reg_set) + (regs_invalidated_by_call, reg_alloc_order, inv_reg_alloc_order) + (reg_class_contents, reg_class_size, reg_class_subclasses) + (reg_class_subunion, reg_class_superunion, reg_names): Delete. + (default_target_hard_regs): New variable + (this_target_hard_regs, initial_call_really_used_regs) + (initial_reg_alloc_order): New conditional variables. + (initial_reg_names): New variable. + (init_reg_sets): Assert that initial_call_really_used_regs, + initial_reg_alloc_order and initial_reg_names + are all the same size as their variable counterparts. Use them to + initialize those counterparts. + * target-globals.h (this_target_hard_regs): Declare. + (target_globals): Add a hard_regs field. + (restore_target_globals): Copy the hard_regs field to + this_target_hard_regs. + * target-globals.c: Include hard-reg-set.h. + (default_target_globals): Initialize the hard_regs field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on $(RTL_H). + * rtl.h: (target_rtl): New structure. + (default_target_rtl): Declare. + (this_target_rtl): Declare as a variable or define as a macro. + (global_rtl, pic_offset_table_rtx, return_address_pointer_rtx): + Redefine as macros. + * emit-rtl.c (default_target_rtl): New variable. + (this_target_rtl): New conditional variable. + (global_rtl, static_regno_reg_rtx, pic_offset_table_rtx) + (return_address_pointer_rtx): Delete. + (initial_regno_reg_rtx): New macro. + (init_emit): Use initial_regno_reg_rtx instead of static_regno_reg_rtx. + (init_emit_regs): Likewise. + * target-globals.h (this_target_rtl): Declare. + (target_globals): Add a rtl field. + (restore_target_globals): Copy the rtl field to this_target_rtl. + * target-globals.c: Include rtl.h. + (default_target_globals): Initialize the rtl field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * Makefile.in (target-globals.o): Depend on $(REGS_H). + * regs.h (target_reg_modes): New structure. + (default_target_reg_modes): Declare. + (this_target_reg_modes): Declare as a variable or define as a macro. + (hard_regno_nregs, reg_raw_mode): Redefine as macros. + * reginfo.c (default_target_reg_modes): New variable. + (this_target_reg_modes): New conditional variable. + (hard_regno_nregs, reg_raw_mode): Delete. + * target-globals.h (this_target_regs): Declare. + (target_globals): Add a regs field. + (restore_target_globals): Copy the regs field to this_target_regs. + * target-globals.c: Include regs.h. + (default_target_globals): Initialize the regs field. + (save_target_globals): Likewise. + +2010-07-12 Richard Sandiford + + * doc/tm.texi.in (SWITCHABLE_TARGET): Document. + * doc/tm.texi: Regenerate. + * Makefile.in (OBJS-common): Add target-globals.o. + (gtype-desc.o): Depend on $(IPA_PROP_H), $(LTO_STREAMER_H) + and target-globals.h. + (target-globals.o): New rule. + (GTFILES): Include $(srcdir)/target-globals.h. + * defaults.h (SWITCHABLE_TARGET): Define. + * gengtype.c (open_base_files): Add target-globals.h to the + list of includes. + * target-globals.h: New file. + * target-globals.c: Likewise. + + * Makefile.in (target-globals.o): Depend on $(FLAGS_H). + * flags.h (target_flag_state): New structure. + (default_target_flag_state): Declare. + (this_target_flag_state): Declare as a variable or define as a macro. + (align_loops_log): Redefine as a macro. + (align_loops_max_skip, align_jumps_log): Likewise. + (align_jumps_max_skip, align_labels_log): Likewise. + (align_labels_max_skip, align_functions_log): Likewise. + * toplev.c (default_target_flag_state): New variable. + (this_target_flag_state): New conditional variable. + (align_loops_log): Delete. + (align_loops_max_skip, align_jumps_log): Likewise. + (align_jumps_max_skip, align_labels_log): Likewise. + (align_labels_max_skip, align_functions_log): Likewise. + * target-globals.h (this_target_flag_state): Declare. + (target_globals): Add a flag_state field. + (restore_target_globals): Copy the flag_state field to + this_target_flag_state. + * target-globals.c: Include flags.h. + (default_target_globals): Initialize the flag_state field. + (save_target_globals): Likewise. + +2010-07-12 Jie Zhang + + * postreload.c (reg_symbol_ref[]): New. + (move2add_use_add2_insn): New. + (move2add_use_add3_insn): New. + (reload_cse_move2add): Handle SYMBOL + OFFSET case. + (move2add_note_store): Likewise. + +2010-07-12 Joern Rennecke + + PR rtl-optimization/44752 + * genautomata.c (main): Don't emit an empty file even if there + is no automaton. + +2010-07-12 Rainer Orth + + * config/i386/i386.c (ix86_sol10_return_in_memory): Rename to + ix86_solaris_return_in_memory. + * config/i386-protos.h: Reflect this. + * config/i386/vx-common.h (SUBTARGET_RETURN_IN_MEMORY): Likewise. + * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Likewise. + Move ... + * config/i386/sol2.h (SUBTARGET_RETURN_IN_MEMORY): ... here. + +2010-07-12 Jie Zhang + + * config/arm/arm.c (arm_get_frame_offsets): Don't use r3 to + align the stack when it's going to be saved. + +2010-07-12 Rainer Orth + + PR pch/14940 + * config/host-solaris.c (mmap_fixed): New function. + (sol_gt_pch_get_address): Use it. + (sol_gt_pch_use_address): Likewise. + +2010-07-12 Rainer Orth + + * config.gcc (i[34567]86-*-solaris2*): Default with_arch_32 to + pentiumpro on Solaris 8 and 9/x86. + * doc/install.texi (Specific, i?86-*-solaris2.[89]): Recommend GNU as. + Document SSE/SSE2 support. + * doc/sourcebuild.texi (Effective-Target Keywords): Document sse. + +2010-07-12 Andi Kleen + + * lto-symtab.c (lto_symtab_merge_decls_1): Use fatal_error + instead of gcc_assert to print better error message for multiple + prevailing defs. + +2010-07-12 Uros Bizjak + + * config/i386/i386.c (ix86_asm_output_function_label): Change format + string placeholder from 0x%x to %#x. + (ix86_code_end): Use putc to output '\n'. + (ix86_print_operand) : Use putc to output ';'. + +2010-07-11 Kai Tietz + + * config/i386/winnt.c (i386_pe_file_end): Quote symbol name + in directive -export. + +2010-07-10 Anatoly Sokolov + + * reginfo.h (reg_classes_intersect_p): Change arguments type to + reg_class_t. + * rtl.h (reg_classes_intersect_p): Adjust prototype. + + * config/rs6000/rs6000.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): + Remove macros. + * config/rs6000/rs6000-protos.h (rs6000_register_move_cost, + rs6000_memory_move_cost): Remove + * config/rs6000/rs6000.c (TARGET_REGISTER_MOVE_COST, + TARGET_MEMORY_MOVE_COST): Define. + (rs6000_register_move_cost): Make static. Change arguments type from + enum reg_class to reg_class_t. Adjust rs6000_memory_move_cost calls. + (rs6000_memory_move_cost): Make static. Change arguments type from + 'enum reg_class' to reg_class_t. + +2010-07-10 Sandra Loosemore + + PR middle-end/42505 + * tree-inline.c (estimate_num_insns): Refactor builtin complexity + lookup code into.... + * builtins.c (is_simple_builtin, is_inexpensive_builtin): ...these + new functions. + * tree.h (is_simple_builtin, is_inexpensive_builtin): Declare. + * cfgloopanal.c (target_clobbered_regs): Define. + (init_set_costs): Initialize target_clobbered_regs. + (estimate_reg_pressure_cost): Add call_p argument. When true, + adjust the number of available registers to exclude the + call-clobbered registers. + * cfgloop.h (target_clobbered_regs): Declare. + (estimate_reg_pressure_cost): Adjust declaration. + * tree-ssa-loop-ivopts.c (struct ivopts_data): Add body_includes_call. + (ivopts_global_cost_for_size): Pass it to estimate_reg_pressure_cost. + (determine_set_costs): Dump target_clobbered_regs. + (loop_body_includes_call): New function. + (tree_ssa_iv_optimize_loop): Use it to initialize new field. + * loop-invariant.c (gain_for_invariant): Adjust arguments to pass + call_p flag through. + (best_gain_for_invariant): Likewise. + (find_invariants_to_move): Likewise. + (move_single_loop_invariants): Likewise, using already-computed + has_call field. + +2010-07-10 Richard Guenther + Joern Rennecke + + PR debug/44832 + * tree-ssa-live.c (mark_all_vars_used_1): Set TREE_USED for LABEL_DECL. + (remove_unused_scope_block_p): Don't drop TREE_USED LABEL_DECLs + unless they have DECL_IGNORED_P set. + +2010-07-10 Richard Guenther + + PR lto/44889 + * gimple.c (gimple_fixup_complete_and_incomplete_subtype_p): New + helper function. + (gimple_types_compatible_p): Similar to pointed-to + types allow and merge a mix of complete and incomplete aggregate. + Use gimple_fixup_complete_and_incomplete_subtype_p for that. + (iterative_hash_gimple_type): Adjust for that. + +2010-07-10 Richard Sandiford + + * tree.h (DECL_REPLACEABLE_P): Strengthen check for weak symbols. + +2010-07-10 Iain Sandoe + + PR objc/44140 + * config/darwin.c (output_objc_section_asm_op): Save and restore + section when outputting ObjC section list. + +2010-07-09 Jan Hubicka + + * lto-streamer-out.c (produce_symtab): Do not write alias + cgraph/varpool nodes. + +2010-07-09 Jan Hubicka + + * tree-inline.c (declare_return_variable): Fix ICE while + inlining DECL_BY_VALUE function not in SSA form + +2010-07-09 Changpeng Fang + + PR tree-optimization/44576 + * tree-ssa-loop-prefetch.c (trip_count_to_ahead_ratio_too_small_p): + New. Pull out from is_loop_prefetching_profitable to implement + the trip count to ahead ratio heuristic. + (mem_ref_count_reasonable_p): New. Pull out from + is_loop_prefetching_profitable to implement the instruction to + memory reference ratio heuristic. Also consider not reasonable if + the memory reference count is above a threshold (to avoid + explosive compilation time. + (insn_to_prefetch_ratio_too_small_p): New. Pull out from + is_loop_prefetching_profitable to implement the instruction to + prefetch ratio heuristic. + (is_loop_prefetching_profitable): Removed. + (loop_prefetch_arrays): Distribute the cost analysis across the + function to allow early exit of the prefetch analysis. + is_loop_prefetching_profitable is splitted into three functions, + with each one called as early as possible. + (PREFETCH_MAX_MEM_REFS_PER_LOOP): New. Threshold above which the + number of memory references in a loop is considered too many. + +2010-07-09 Bernd Schmidt + + * reload.c (find_reloads): Don't clear badop if we have a winreg + alternative, but not win, and the class only has fixed regs. + * hard-reg-set.h (class_only_fixed_regs): Declare. + * reginfo.c (class_only_fixed_regs): New array. + (init_reg_sets_1): Initialize it. + * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn): Don't + discourage alternatives using the stack pointer. + + * config/arm/arm.md (addsi3_cbranch): Switch alternatives 0 and 1. + + * config/arm/arm.md (Thumb-1 ldrsb peephole): New. + + * config/arm/arm.md (cbranchqi4): Fix array size. + (addsi3_cbranch): Also andle alternative 2 like alternative 3 when + calculating length. + +2010-07-09 Richard Guenther + + * gimple.c (struct type_fixup_s): New struct and VEC type. + (gimple_register_type_fixups): New static global. + (gimple_queue_type_fixup): New function. + (gimple_types_compatible_p): Queue type fixups instead of + applying them here. + (gimple_register_type): Apply queued fixups for the + canonical type. Empty the type fixup queue. + +2010-07-09 Uros Bizjak + + * configure.ac (gcc_cv_as_ix86_rep_lock_prefix): Fix test. + * configure: Regenerate. + * config.in: Ditto. + +2010-07-09 Jakub Jelinek + Denys Vlasenko + Bernhard Reutner-Fischer + + PR tree-optimization/28632 + * tree-vrp.c (zero_nonzero_bits_from_vr): New function. + (extract_range_from_binary_expr): Further optimize + BIT_AND_EXPR and BIT_IOR_EXPR. + +2010-07-09 Sebastian Pop + + * tree-if-conv.c (fold_or_predicates): New. + (add_to_predicate_list): Call it. + +2010-07-09 Richard Guenther + + PR middle-end/44890 + * tree-ssa-address.c (create_mem_ref_raw): Only build a MEM_REF + if base is a pointer. + * tree-cfg.c (verify_expr): Update MEM_REF checking. + +2010-07-08 Michael Meissner + + PR target/44877 + * config/rs6000/rs6000.c (rs6000_expand_builtin): Use + POINTER_TYPE_P instead of checking only for POINTER_TYPE for the + builtin mask for load/store builtins. + +2010-07-09 Uros Bizjak + + * configure.ac (gcc_cv_as_ix86_rep_lock_prefix): Also check + for "lock addl". + * configure: Regenerate. + * config/i386/i386.c (ix86_print_operand) : + Remove TARGET_MACHO. + +2010-07-09 Peter Bergner + + * config/rs6000/rs6000.c (rs6000_override_options): Fix setting of + default ISA flags. + * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add -mvsx. + +2010-07-09 Tom de Vries + + * tree.c (type_hash_if_marked_p): Removed non-ggc_marked_p clause. + +2010-07-09 Hariharan Sandanagobalane + + * config/picochip/picochip.md (commsTestPort): Emit more + efficient sequence for tstport instruction. + +2010-07-09 Uros Bizjak + + * config/i386/i386.c (ix86_veclib_handler): Make static. + +2010-07-09 Richard Guenther + + PR tree-optimization/44852 + * tree-ssa-alias.c: Include toplev.h for exact_log2. + (indirect_ref_may_alias_decl_p): Properly handle negative offsets + in MEM_REF. + (indirect_refs_may_alias_p): Likewise. + * Makefile.in (tree-ssa-alias.o): Add $(TOPLEV_H). + +2010-07-09 Richard Guenther + + PR tree-optimization/44882 + * tree-vect-stmts.c (vectorizable_store): Do not assert alias + sets do conflict. + (vectorizable_load): Likewise. + +2010-07-09 Bernd Schmidt + + PR target/40657 + * config/arm/arm.c (thumb1_extra_regs_pushed): New arg FOR_PROLOGUE. + All callers changed. + Handle the case when we're called for the epilogue. + (thumb_unexpanded_epilogue): Use it. + (thumb1_expand_epilogue): Likewise. + +2010-07-09 Jakub Jelinek + + * tree-vrp.c (extract_range_from_binary_expr) : If + both ranges are range_int_cst_p with non-negative minimum, + try harder to derive smaller range. + +2010-07-09 Manuel López-Ibáñez + + * genrecog.c: Include diagnostic-core.h before toplev.h. + * genoutput.c: Likewise. + * genextract.c: Likewise. + * genautomata.c: Likewise. + * genemit.c: Likewise. + * genpeep.c: Likewise. + * genattrtab.c: Likewise. + * genconditions.c: Likewise. + * genpreds.c: Likewise. + +2010-07-08 Andi Kleen + + * lto-section-in.c (lto_section_name): Add missing comma. + +2010-07-08 Anatoly Sokolov + + * config/ia64/ia64.h (OVERRIDE_OPTIONS): Remove macros. + * config/ia64/ia64-protos.h (ia64_override_options): Remove. + * config/ia64/ia64.c (TARGET_OPTION_OVERRIDE): Define. + (ia64_override_options): Rename to... + (ia64_option_override): ... this one. Make static. + +2010-07-08 Eric Botcazou + + PR middle-end/44843 + * emit-rtl.c (set_mem_attributes_minus_bitpos): Do not rely on the + pointed-to type of the offset in a MEM_REF to compute the alignment. + +2010-07-08 Kai Tietz + + * final.c (final_scan_insn): Replace + TARGET_UNWIND_INFO macro check by unwind_emit + hook NULL check. + * targhooks.c (default_unwind_emit): Removed. + * targhooks.h (default_unwind_emit): Likewise. + * target.def (unwind_emit): Set default value to NULL. + + * config/i386/i386-protos.h (ix86_asm_output_function_label): + New prototype. + * config/i386/i386.c (ix86_function_ms_hook_prologue): Check + for NULL fntype argument and allow 64-bit targets. + (ix86_asm_output_function_label): New function. + (ix86_expand_prologue): Handle 64-bit ms hook prologue. + (ix86_handle_fndecl_attribute): Likewise. + * doc/extend.texi (ms_hook_prologue): Adjust documentation. + * doc/doc/tm.texi: Regenerated. + * doc/doc/doc/tm.texi.in (ASM_OUTPUT_FUNCTION_LABEL): New. + (ASM_DECLARE_FUNCTION_NAME): Adjust documentation. + * defaults.h (ASM_OUTPUT_FUNCTION_LABEL): New macro. + * config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Use + ASM_OUTPUT_FUNCTION_LABEL instead of ASM_OUTPUT_LABEL. + * config/elfos.h: Likewise. + * config/i386/cygming.h: Likewise. + * config/netbsd-aout.h: Likewise. + * config/openbsd.h: Likewise. + * config/i386/i386.h (ASM_OUTPUT_FUNCTION_LABEL): Override + by ix86_asm_output_function_label function call. + * varasm.c (assemble_start_function): Use + ASM_OUTPUT_FUNCTION_LABEL instead of ASM_OUTPUT_LABEL. + +2010-07-08 Jan Hubicka + + * cgraph.c (cgraph_will_be_removed_from_program_if_no_direct_calls): + New function. + * cgraph.h (cgraph_will_be_removed_from_program_if_no_direct_calls): + Declare. + * ipa-cp.c (ipcp_estimate_growth): Use it. + * ipa-inline.c (cgraph_estimate_growth, cgraph_decide_inlining): + Likewise. + +2010-07-08 Jan Hubicka + + * tree-inline.c (declare_return_variable): Allocate annotation for new + temporary. + +2010-07-08 Sebastian Pop + + PR tree-optimization/44710 + * tree-if-conv.c (parse_predicate): New. + (add_to_predicate_list): Call it, call maybe_fold_or_comparisons. + Make sure that the predicates are either SSA_NAMEs or gimple_condexpr. + +2010-07-08 Sebastian Pop + + * common.opt (ftree-loop-if-convert): New flag. + * doc/invoke.texi (ftree-loop-if-convert): Documented. + * tree-if-conv.c (gate_tree_if_conversion): Enable if-conversion + when flag_tree_loop_if_convert is set. + +2010-07-08 Uros Bizjak + + * config/i386/i386.c: Use short syntax for function calls + through function pointers. + * config/i386/i386.md: Ditto. + +2010-07-08 Eric Botcazou + + * emit-rtl.c (set_mem_attributes_minus_bitpos): Fix formatting issues. + +2010-07-08 Richard Guenther + + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Fix + stmt check for POINTER_PLUS_EXPRs, fix the pointer assignment. + +2010-07-08 Jakub Jelinek + + * dwarf2out.c (mem_loc_descriptor): Use DW_OP_const[48]u + instead of DW_OP_addr for DW_OP_GNU_push_tls_address operand. + (loc_list_from_tree): Likewise. + (output_loc_operands): Handle outputting DW_OP_const[48]u + with loc->dtprel set. + (resolve_addr_in_expr): Handle loc->dtprel like DW_OP_addr. + +2010-07-08 Jan Hubicka + + * ipa.c: Include pointer-set.h + (cgraph_externally_visible_p): New attribute ALIASED; + when in LTO, hidden symbols are local unless they are aliased. + (function_and_variable_visibility): Compute aliased nodes; + handle LTO and hidden symbol on functions and vars. + * cgraph.c (cgraph_make_decl_local): Clear NAMED_SECTION + for COMDAT symbols; handle COMDAT_GROUPS also at vars. + +2010-07-08 Eric Botcazou + + * config/i386/cygming.h (STACK_CHECK_STATIC_BUILTIN): Define to 1. + * config/i386/freebsd.h (STACK_CHECK_STATIC_BUILTIN): Likewise. + * config/i386/linux.h (STACK_CHECK_STATIC_BUILTIN): Likewise. + * config/i386/linux64.h (STACK_CHECK_STATIC_BUILTIN): Likewise. + * config/i386/sol2.h (STACK_CHECK_STATIC_BUILTIN): Likewise. + * config/i386/i386.c (ix86_gen_adjust_stack_and_probe): New variable. + (ix86_gen_probe_stack_range): Likewise. + (override_options): Set them. + (ix86_target_stack_probe): New function. + (ix86_compute_frame_layout): Force use of push instructions to + save registers if stack checking with probes is enabled. + (get_scratch_register_on_entry): New function. + (release_scratch_register_on_entry): Likewise. + (ix86_adjust_stack_and_probe): Likewise. + (output_adjust_stack_and_probe): Likewise. + (ix86_emit_probe_stack_range): Likewise. + (output_probe_stack_range): Likewise. + (ix86_expand_prologue): Emit stack checking code if static built-in + stack checking is enabled. + Test ix86_target_stack_probe instead of TARGET_STACK_PROBE. + * config/i386/i386-protos.h (ix86_target_stack_probe): Declare. + (output_adjust_stack_and_probe): Likewise. + (output_probe_stack_range): Likewise. + * config/i386/i386.md (UNSPECV_PROBE_STACK_RANGE): New constant. + (allocate_stack_worker_32): Test ix86_target_stack_probe instead of + TARGET_STACK_PROBE. + (allocate_stack_worker_64): Likewise. + (allocate_stack): Likewise. + (adjust_stack_and_probe): New insn. + (probe_stack_range): Likewise. + +2010-07-08 Richard Guenther + + PR tree-optimization/44831 + * tree-ssa-phiprop.c (phiprop_insert_phi): Properly build + a MEM_REF preserving TBAA info of the original dereference. + Dereference the original pointer if the address is not invariant. + (propagate_with_phi): Fixup type checks wrt MEM_REFs. Require + at least one invariant address that we are going to dereference. + +2010-07-08 Richard Guenther + + PR tree-optimization/44861 + * tree-vect-stmts.c (vectorizable_store): Preserve TBAA + information when building MEM_REFs. + (vectorizable_load): Likewise. + * tree-vect-data-refs.c (vect_setup_realignment): Likewise. + +2010-07-08 Eric Botcazou + + * config/sol2-c.c: Do not include diagnostic-core.h. + +2010-07-08 Ramana Radhakrishnan + + PR bootstrap/44768 + * cfgexpand.c (estimated_stack_frame_size): Make self-contained + with respect to current_function_decl. Pass decl of the function. + * tree-inline.h (estimated_stack_frame_size): Adjust prototype. + * ipa-inline.c (compute_inline_parameters): Pass decl to + estimated_stack_frame_size. + +2010-07-08 Richard Guenther + + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): + New function. + (valueize_refs): Call it. + +2010-07-08 Richard Guenther + + PR rtl-optimization/44838 + * tree-ssa-alias.c (indirect_refs_may_alias_p): When not in + SSA form do not use pointer equivalence. + +2010-07-08 Eric Botcazou + + * dwarf2out.c (AT_linkage_name): Delete. + (add_linkage_attr): New function. + (add_linkage_name): Call it to emit the linkage attribute. + (dwarf2out_finish): Likewise. + (move_linkage_attr): Explicitly accept both attribute variants. + +2010-07-08 Manuel López-Ibáñez + + * toplev.h: Do not include diagnostic-core.h. + Include diagnostic-core.h in every file that includes toplev.h. + * c-tree.h: Do not include toplev.h. + * pretty-print.h: Update comment. + * Makefile.in: Update dependencies. + * alias.c: Include diagnostic-core.h in every file that includes + toplev.h. + * attribs.c: Likewise. + * auto-inc-dec.c: Likewise. + * bb-reorder.c: Likewise. + * bt-load.c: Likewise. + * caller-save.c: Likewise. + * calls.c: Likewise. + * cfg.c: Likewise. + * cfganal.c: Likewise. + * cfgbuild.c: Likewise. + * cfgcleanup.c: Likewise. + * cfghooks.c: Likewise. + * cfgloop.c: Likewise. + * combine.c: Likewise. + * config/alpha/alpha.c: Likewise. + * config/arc/arc.c: Likewise. + * config/arm/arm.c: Likewise. + * config/arm/pe.c: Likewise. + * config/avr/avr.c: Likewise. + * config/bfin/bfin.c: Likewise. + * config/cris/cris.c: Likewise. + * config/crx/crx.c: Likewise. + * config/darwin-c.c: Likewise. + * config/darwin.c: Likewise. + * config/fr30/fr30.c: Likewise. + * config/frv/frv.c: Likewise. + * config/h8300/h8300.c: Likewise. + * config/host-darwin.c: Likewise. + * config/i386/i386.c: Likewise. + * config/i386/netware.c: Likewise. + * config/i386/nwld.c: Likewise. + * config/i386/winnt-cxx.c: Likewise. + * config/i386/winnt-stubs.c: Likewise. + * config/i386/winnt.c: Likewise. + * config/ia64/ia64-c.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/iq2000/iq2000.c: Likewise. + * config/lm32/lm32.c: Likewise. + * config/m32c/m32c-pragma.c: Likewise. + * config/m32c/m32c.c: Likewise. + * config/m32r/m32r.c: Likewise. + * config/m68hc11/m68hc11.c: Likewise. + * config/m68k/m68k.c: Likewise. + * config/mcore/mcore.c: Likewise. + * config/mep/mep-pragma.c: Likewise. + * config/mep/mep.c: Likewise. + * config/mmix/mmix.c: Likewise. + * config/mn10300/mn10300.c: Likewise. + * config/moxie/moxie.c: Likewise. + * config/pa/pa.c: Likewise. + * config/pdp11/pdp11.c: Likewise. + * config/picochip/picochip.c: Likewise. + * config/rs6000/rs6000-c.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/rx/rx.c: Likewise. + * config/s390/s390.c: Likewise. + * config/score/score.c: Likewise. + * config/score/score3.c: Likewise. + * config/score/score7.c: Likewise. + * config/sh/sh.c: Likewise. + * config/sh/symbian-base.c: Likewise. + * config/sh/symbian-c.c: Likewise. + * config/sh/symbian-cxx.c: Likewise. + * config/sol2-c.c: Likewise. + * config/sol2.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/spu/spu.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/v850/v850-c.c: Likewise. + * config/v850/v850.c: Likewise. + * config/vax/vax.c: Likewise. + * config/vxworks.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + * convert.c: Likewise. + * cse.c: Likewise. + * cselib.c: Likewise. + * dbgcnt.c: Likewise. + * dbxout.c: Likewise. + * ddg.c: Likewise. + * dominance.c: Likewise. + * emit-rtl.c: Likewise. + * explow.c: Likewise. + * expmed.c: Likewise. + * fixed-value.c: Likewise. + * fold-const.c: Likewise. + * fwprop.c: Likewise. + * gcse.c: Likewise. + * ggc-common.c: Likewise. + * ggc-page.c: Likewise. + * ggc-zone.c: Likewise. + * gimple-low.c: Likewise. + * gimplify.c: Likewise. + * graph.c: Likewise. + * haifa-sched.c: Likewise. + * ifcvt.c: Likewise. + * implicit-zee.c: Likewise. + * integrate.c: Likewise. + * ira-build.c: Likewise. + * ira-color.c: Likewise. + * ira-conflicts.c: Likewise. + * ira-costs.c: Likewise. + * ira-lives.c: Likewise. + * ira.c: Likewise. + * lists.c: Likewise. + * loop-doloop.c: Likewise. + * loop-iv.c: Likewise. + * lto-opts.c: Likewise. + * lto-symtab.c: Likewise. + * main.c: Likewise. + * modulo-sched.c: Likewise. + * optabs.c: Likewise. + * params.c: Likewise. + * plugin.c: Likewise. + * postreload-gcse.c: Likewise. + * postreload.c: Likewise. + * predict.c: Likewise. + * profile.c: Likewise. + * real.c: Likewise. + * regcprop.c: Likewise. + * reginfo.c: Likewise. + * regmove.c: Likewise. + * reorg.c: Likewise. + * resource.c: Likewise. + * rtl.c: Likewise. + * rtlanal.c: Likewise. + * sched-deps.c: Likewise. + * sched-ebb.c: Likewise. + * sched-rgn.c: Likewise. + * sdbout.c: Likewise. + * sel-sched-dump.c: Likewise. + * sel-sched-ir.c: Likewise. + * simplify-rtx.c: Likewise. + * stmt.c: Likewise. + * stor-layout.c: Likewise. + * store-motion.c: Likewise. + * targhooks.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-dump.c: Likewise. + * tree-eh.c: Likewise. + * tree-inline.c: Likewise. + * tree-nomudflap.c: Likewise. + * tree-object-size.c: Likewise. + * tree-optimize.c: Likewise. + * tree-outof-ssa.c: Likewise. + * tree-phinodes.c: Likewise. + * tree-profile.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-ssa-uninit.c: Likewise. + * tree-ssa.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree-vrp.c: Likewise. + * varasm.c: Likewise. + * vec.c: Likewise. + * web.c: Likewise. + * xcoffout.c: Likewise. + +2010-07-07 Richard Sandiford + + * gengtype.c (write_field_root): New function. + (write_root): Use it. + +2010-07-07 Wei Guozhi + + * config/arm/thumb2.md (peephole2 to convert zero_extract/compare + of lowest bits to lshift/compare): Add a missing line. + +2010-07-07 Wei Guozhi + + * config/arm/thumb2.md (peephole2 to convert zero_extract/compare + of lowest bits to lshift/compare): New. + +2010-07-07 Tom Tromey + + * doc/tm.texi: Update. + * doc/tm.texi.in (SDB and DWARF) : + Add @hook. + * target.def (want_debug_pub_sections): New hook. + * config/darwin.h (TARGET_WANT_DEBUG_PUB_SECTIONS): Define. + * dwarf2out.c (add_pubname_string): Check + targetm.want_debug_pub_sections. + (add_pubname): Likewise. + (add_pubtype): Likewise. + +2010-07-07 Jie Zhang + + * genautomata.c (output_automata_list_min_issue_delay_code): + Correctly decompress min_issue_delay. + +2010-07-07 Bernd Schmidt + + PR rtl-optimization/44404 + * auto-inc-dec.c (find_inc): Avoid calling count_occurrences if + possible, use reg_overlap_mentioned_p instead. + +2010-07-07 Duncan Sands + + PR middle-end/41355 + * tree.c (build_function_type_skip_args): Copy the original type using + build_distinct_type_copy rather than copy_node. + +2010-07-07 H.J. Lu + + PR target/44850 + * config/i386/i386.c (ix86_function_ms_hook_prologue): Revert + revision 161876. + (ix86_expand_prologue): Likewise. + (ix86_handle_fndecl_attribute): Likewise. + (ix86_asm_declare_function_name): Likewise. + * config/i386/i386.h (ASM_DECLARE_FUNCTION_NAME): Likewise. + * config/i386/cygming.h (ASM_DECLARE_FUNCTION_NAME): Likewise. + (SUBTARGET_ASM_DECLARE_FUNCTION_NAME): Likewise. + * config/i386/i386-protos.h (ix86_asm_declare_function_name): Likewise. + * doc/extend.texi: Likewise. + +2010-07-07 H.J. Lu + + PR target/44844 + * config/i386/i386.md (rdrand): Changed to expand to + retry if the carry flag isn't valid. + (rdrand_1): New. + +2010-07-07 Richard Guenther + + PR middle-end/44790 + * expr.c (expand_expr_real_1): Go the POINTER_PLUS_EXPR path + for expanding the constant offset for MEM_REFs. + +2010-07-07 Richard Guenther + + * tree-ssa-propagate.h (valid_gimple_call_p): Remove. + * tree-ssa-propagate.c (valid_gimple_call_p): Make static. Fix. + * gimple.h (is_gimple_operand): Remove. + * gimple.c (is_gimple_operand): Likewise. + (walk_gimple_op): Fix wi->val_only setting for calls. + * tree-cfg.c (verify_gimple_call): Fix argument validation. + * tree-profile.c (tree_gen_ic_func_profiler): Do not create + invalid gimple calls. + +2010-07-06 Jan Hubicka + + * lto-cgraph.c (output_cgraph): Add missing declaration. + +2010-07-06 Jan Hubicka + + * lto-cgraph.c (output_cgraph): Output toplevel asms only into first + partition. + +2010-07-06 Alexandre Oliva + + * doc/gimple.texi (GIMPLE_DEBUG): Document. + * doc/rtl.texi (Debug Information): New node. + (NOTE_INSN_VAR_LOCATION): Document. + (debug_insn): Likewise. + * doc/generic.texi (DEBUG_EXPR_DECL): Document. + +2010-07-07 Jan Hubicka + + With parts by Richard Guenther. + + PR middle-end/44813 + * tree-ssa-uninit.c (ssa_undefined_value_p): Result decl is defined + for functions passed by reference. + * tree.c (needs_to_live_in_memory): RESULT_DECL don't need to live + in memory when passed by reference. + * tree-ssa-ccp.c (get_default_value): Only VAR_DECL is undefined at + beggining. + * ipa-split.c (split_function): Cleanup way return value is passed; + handle SSA DECL_BY_REFERENCE retvals. + * tree-ssa.c (verify_def): Verify that RESULT_DECL is read only when + DECL_BY_REFERENCE is set. + * tree-ssa-structalias.c (get_constraint_for_ssa_var, get_fi_for_callee, + find_what_p_points_to): Handle RESULT_DECL. + * tree-inline.c (declare_return_variable): Get new entry_block argument; + when passing by reference ensure that RESULT_DECL is gimple_val. + (remap_gimple_op_r): Remap RESULT_DECL ssa name. + (remap_gimple_stmt): Handle SSA DECL_BY_REFERENCE returns. + +2010-07-07 Bernd Schmidt + + PR rtl-optimization/44787 + * config/arm/arm.md (arith_shiftsi): Allow stack pointer in operand 2. + * config/arm/thumb2.md (thumb2_arith_shiftsi): Likewise. + +2010-07-06 Jan Hubicka + + * lto-symtab.c (lto_cgraph_replace_node): Handle aliases. + (lto_symtab_resolve_can_prevail_p): Also alias of cgraph node + with body can prevail. + (lto_symtab_resolve_symbols): Use cgraph_get_node_or_alias. + (lto_symtab_merge_cgraph_nodes_1): Do not remove nodes from aliases. + * cgraph.c (cgraph_get_node_or_alias): New function. + * cgraph.h (cgraph_get_node_or_alias): Declare. + +2010-07-06 Kai Tietz + + * config/i386/i386.c (ix86_function_ms_hook_prologue): Enable x64 + support. + (ix86_expand_prologue): Likewise. + (ix86_handle_fndecl_attribute): Likewise. + (ix86_asm_declare_function_name): New function for + ASM_DECLARE_FUNCTION_NAME. + * config/i386/i386.h (ASM_DECLARE_FUNCTION_NAME): New macro. + * config/i386/cygming.h (ASM_DECLARE_FUNCTION_NAME): Removed. + (SUBTARGET_ASM_DECLARE_FUNCTION_NAME): New macro. + * config/i386/i386-protos.h (ix86_asm_declare_function_name): New. + * doc/extend.texi: Adjust documentation about ms_hook_prologue + attribute. + +2010-07-06 Uros Bizjak + + * config/i386/i386.md (immediate_operand): New mode attribute. + + (pro_epilogue_adjust_stack__1): Macroize insn from + pro_epilogue_adjust_stack and pro_epilogue_adjust_stack_rex64 + using P mode iterator. + (pro_epilogue_adjust_stack_di_2): Rename from + pro_epilogue_adjust_stack_rex64_2. + + * config/i386/i386.c (pro_epilogue_adjust_stack): Update for rename. + +2010-07-06 Uros Bizjak + + * config/i386/i386.md (insv): Call gen_movdi_insv1 or gen_movsi_insv1 + through gen_mov_insv_1 function pointer. + (fmod3): Call gen_truncxf2_i387_noop_unspec or + gen_truncxf2 through gen_truncxf function pointer. + (remainder3): Ditto. + (cmpstrnsi): Rename cmp_insn function pointer to gen_cmp. + (allocate_stack): Call gen_allocate_stack_worker_64 or + gen_allocate_stack_worker_32 through gen_allocate_stack_worker + function pointer. + (probe_stack): Call gen_iordi3 or gen_iorsi3 through gen_ior3 + function pointer. + +2010-07-06 Uros Bizjak + + * config/i386/i386.md (*add3_cconly_overflow): Use + operand constraint instead of m. + +2010-07-06 Richard Guenther + + PR middle-end/44828 + * convert.c (convert_to_integer): Watch out for overflowing + MULT_EXPR as well. + +2010-07-05 Jan Hubicka + + * lto-streamer.c (write_symbol_vec): Rename to ... + (write_symbol) ... this one; write only symbol given and when + present in cache. Sanity check that what is defined is present + in cgraph/varpool with body/finalized decl. + (write_symbols_of_kind): Remove. + (produce_symtab): Take outputblock and sets; use cgraph/varpool/alias + pairs to produce symtab. + (produce_asm_for_decls): Update call of produce_symtab; don't do so + when doing WPA streaming. + +2010-07-05 Jan Hubicka + + * gimple-fold.c (gimple_fold_obj_type_ref_known_binfo): Check that + function is still available to fold into. + +2010-07-05 Nathan Froyd + + * vec.h (FOR_EACH_VEC_ELT_REVERSE): New macro. + * function.h (struct_function): Change type of local_decls field + to a VEC. + (add_local_decl): New function. + (FOR_EACH_LOCAL_DECL): New macro. + * cfgexpand.c (init_vars_expansion): Adjust for new type of + cfun->local_decls. + (estimated_stack_frame_size): Likewise. + (expand_used_vars): Likewise. + * cgraphbuild.c (build_cgraph_edges): Likewise. + * function.c (instantiate_decls_1): Likewise. + * ipa-struct-reorg.c (build_data_structure): Likewise. + * ipa-type-escape.c (analyze_function): Likewise. + * lto-streamer-in.c (input_function): Likewise. + * lto-streamer-out.c (output_function): Likewise. + * tree-ssa-live.c (remove_unused_locals): Likewise. + * tree.c (free_lang_data_in_decl): Likewise. + (find_decls_types_in_node): Likewise. + * omp-low.c (remove_exit_barrier): Likewise. + (expand_omp_taskreg): Likewise. + (list2chain): Rename to... + (vec2chain): ...this. Adjust. + * cgraphunit.c (assemble_thunk): Call add_local_decl. + * tree-cfg.c (replace_by_duplicate_decl): Likewise. + * gimple-low.c (record_vars_into): Likewise. + * tree-inline.c (remap_decls): Likewise. + (declare_return_variable): Likewise. + (declare_inline_vars): Likewise. + (copy_forbidden): Adjust for new type of cfun->local_decls. + (add_local_variables): New function. + (expand_call_inline): Call it. + (tree_function_versioning): Likewise. + +2010-07-05 H.J. Lu + + AVX Programming Reference (June, 2010) + * config/i386/cpuid.h (bit_F16C): New. + (bit_RDRND): Likewise. + (bit_FSGSBASE): Likewise. + + * config/i386/i386-builtin-types.def: Add + "DEF_FUNCTION_TYPE (UINT16)", function types for + float16 <-> float conversions and + "DEF_FUNCTION_TYPE (VOID, UINT64)". + + * config/i386/i386-c.c (ix86_target_macros_internal): Support + OPTION_MASK_ISA_FSGSBASE, OPTION_MASK_ISA_RDRND and + OPTION_MASK_ISA_F16C. + + * config/i386/i386.c (OPTION_MASK_ISA_FSGSBASE_SET): New. + (OPTION_MASK_ISA_RDRND_SET): Likewise. + (OPTION_MASK_ISA_F16C_SET): Likewise. + (OPTION_MASK_ISA_FSGSBASE_UNSET): Likewise. + (OPTION_MASK_ISA_RDRND_UNSET): Likewise. + (OPTION_MASK_ISA_F16C_UNSET): Likewise. + (OPTION_MASK_ISA_AVX_UNSET): Add OPTION_MASK_ISA_F16C_UNSET. + (ix86_handle_option): Handle OPT_mfsgsbase, OPT_mrdrnd and OPT_mf16c. + (ix86_target_string): Support -mfsgsbase, -mrdrnd and -mf16c. + (pta_flags): Add PTA_FSGSBASE, PTA_RDRND and PTA_F16C. + (override_options): Handle them. + (ix86_valid_target_attribute_inner_p): Handle fsgsbase, rdrnd and f16c. + (ix86_builtins): Add IX86_BUILTIN_RDFSBASE32, + IX86_BUILTIN_RDFSBASE64, IX86_BUILTIN_RDGSBASE32, + IX86_BUILTIN_RDGSBASE64, IX86_BUILTIN_WRFSBASE32, + IX86_BUILTIN_WRFSBASE64, IX86_BUILTIN_WRGSBASE32, + IX86_BUILTIN_WRGSBASE64, IX86_BUILTIN_RDRAND16, + IX86_BUILTIN_RDRAND32, IX86_BUILTIN_RDRAND64, + IX86_BUILTIN_CVTPH2PS, IX86_BUILTIN_CVTPH2PS256, + IX86_BUILTIN_CVTPS2PH and IX86_BUILTIN_CVTPS2PH256. + (bdesc_args): Likewise. + (ix86_expand_args_builtin): Handle V8SF_FTYPE_V8HI, + V4SF_FTYPE_V8HI, V8HI_FTYPE_V8SF_INT and V8HI_FTYPE_V4SF_INT. + (ix86_expand_special_args_builtin): Handle VOID_FTYPE_UINT64, + VOID_FTYPE_UNSIGNED, UNSIGNED_FTYPE_VOID and UINT16_FTYPE_VOID. + Handle non-memory store. + + * config/i386/i386.h (TARGET_FSGSBASE): New. + (TARGET_RDRND): Likewise. + (TARGET_F12C): Likewise. + + * config/i386/i386.md (UNSPEC_VCVTPH2PS): New. + (UNSPEC_VCVTPS2PH): Likewise. + (UNSPECV_RDFSBASE): Likewise. + (UNSPECV_RDGSBASE): Likewise. + (UNSPECV_WRFSBASE): Likewise. + (UNSPECV_WRGSBASE): Likewise. + (UNSPECV_RDRAND): Likewise. + (rdfsbase): Likewise. + (rdgsbase): Likewise. + (wrfsbase): Likewise. + (wrgsbase): Likewise. + (rdrand): Likewise. + + * config/i386/i386.opt: Add -mfsgsbase, -mrdrnd and -mf16c. + + * config/i386/immintrin.h (_rdrand_u16): New. + (_rdrand_u32): Likewise. + (_readfsbase_u32): Likewise. + (_readfsbase_u64): Likewise. + (_readgsbase_u32): Likewise. + (_readgsbase_u64): Likewise. + (_writefsbase_u32): Likewise. + (_writefsbase_u64): Likewise. + (_writegsbase_u32): Likewise. + (_writegsbase_u64): Likewise. + (_rdrand_u64): Likewise. + (_cvtsh_ss): Likewise. + (_mm_cvtph_ps): Likewise. + (_mm256_cvtph_ps): Likewise. + (_cvtss_sh): Likewise. + (_mm_cvtps_ph): Likewise. + (_mm256_cvtps_ph): Likewise. + + * config/i386/sse.md (vcvtph2ps): New. + (*vcvtph2ps_load): Likewise. + (vcvtph2ps256): Likewise. + (vcvtps2ph): Likewise. + (*vcvtps2ph): Likewise. + (*vcvtps2ph_store): Likewise. + (vcvtps2ph256): Likewise. + + * doc/extend.texi: Document FSGSBASE and RDRND built-in functions. + + * doc/invoke.texi: Document -mfsgsbase, -mrdrnd and -mf16c. + +2010-07-05 Joern Rennecke + + PR bootstrap/44512 + * genenums.c (main): Output include of insn-constants.h + * Makefile.in (insn-enums.o): Depend on insn-constants.h. + +2010-07-05 Uros Bizjak + + * config/i386/i386.c (ix86_gen_allocate_stack_worker): New. + (override_options): Initialize it. + (ix86_expand_prologue): Use it. + +2010-07-05 Jakub Jelinek + + * tree-nrv.c (tree_nrv): Set DECL_VALUE_EXPR on found to result. + +2010-07-05 Anatoly Sokolov + + * double-int.h (fit_double_type): Remove declaration. + * double-int.c (fit_double_type): Remove function. + * tree.h (int_fits_type_p): Adjust prototype. + * tree.c (int_fits_type_p): Return bool. Use double_int_fits_to_tree_p + instead of fit_double_type. + (build_int_cst_type): Use double_int_to_tree and shwi_to_double_int + instead of fit_double_type and build_int_cst_wide. + * builtins.c (): Use double_int_fits_to_tree_p and double_int_to_tree + instead of fit_double_type and build_int_cst_wide. + (fold_builtin_object_size): Use double_int_fits_to_tree_p instead + of fit_double_type. + +2010-07-05 Jan Hubicka + + * cgraph.h (cgraph_node, cgraph_varpool_node): Update docmentation of + in_other_partition. + * lto-cgraph.c (referenced_from_other_partition_p, + reachable_from_other_partition_p): Use in_other_partition flags. + (output_node, output_varpool_node): COMDAT nodes always have private + copies and thus are never used from other partition. + +2010-07-05 Anatoly Sokolov + + * config/ia64/ia64.h (MEMORY_MOVE_COST): Remove macro. + * config/ia64/t-ia64 (ia64.o): Depend on reload.h. + * config/ia64/ia64.c Include reload.h. + (ia64_memory_move_cost): New function. + (TARGET_MEMORY_MOVE_COST): Define. + (ia64_register_move_cost): Replace MEMORY_MOVE_COST with + memory_move_cost. + +2010-07-05 Sandra Loosemore + + PR middle-end/42505 + * tree-ssa-loop-ivopts.c (determine_set_costs): Delete obsolete + comments about cost model. + (try_add_cand_for): Add second strategy for choosing initial set + based on original IVs, controlled by ORIGINALP argument. + (get_initial_solution): Add ORIGINALP argument. + (find_optimal_iv_set_1): New function, split from find_optimal_iv_set. + (find_optimal_iv_set): Try two different strategies for choosing + the IV set, and return the one with lower cost. + +2010-07-05 Richard Guenther + + * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Copy alias info. + +2010-07-05 Richard Guenther + + * tree.c (reference_alias_ptr_type): New function. + * tree.h (reference_alias_ptr_type): Declare. + * tree-ssa-loop-ivopts.c (copy_ref_info): Restructure to + allow non-TARGET_MEM_REF new refs. + (rewrite_use_address): Pass old alias pointer type to create_mem_ref. + * tree-ssa-address.c (create_mem_ref_raw): Get alias pointer type. + Build a MEM_REF instead of a TARGET_MEM_REF if possible. + (create_mem_ref): Get alias pointer type. Adjust calls to + create_mem_ref_raw. + (maybe_fold_tmr): Likewise. + * tree-flow.h (create_mem_ref): Adjust prototype. + +2010-07-05 Jakub Jelinek + + PR c++/44808 + * gimplify.c (gimplify_modify_expr): Only SET_DECL_DEBUG_EXPR if + *from_p is VAR_DECL. + +2010-07-05 Nathan Froyd + + * tree.h (build_call_list): Remove. + * tree.c (build_call_list): Remove. + +2010-07-05 Richard Guenther + + * double-int.h (double_int_sub): Declare. + * double-int.c (double_int_sub): New function. + * dwarf2out.c (field_byte_offset): Use it. + * fixed-value.c (do_fixed_add): Likewise. + (do_fixed_multiply): Likewise. + (do_fixed_divide): Likewise. + * tree-predcom.c (add_ref_to_chain): Likewise. + (determine_roots_comp): Likewise. + * tree-ssa-loop-niter.c (derive_constant_upper_bound_ops): Likewise. + 2010-07-05 Nathan Froyd * vec.h (VEC_splice, VEC_safe_splice): New macros. Add function @@ -18,8 +1882,8 @@ (addsi3_carryin_alt2_): Renamed from addsi3_carryin_alt2. Operands 1 and 2 are commutative. Parametrize using LTUGEU. (addsi3_carryin_alt1, addsi3_carryin_alt3): Remove. - (subsi3_compare): Renamed from subsi3_compare0_c. Change CC_NOTB to - CC. + (subsi3_compare): Renamed from subsi3_compare0_c. + Change CC_NOTB to CC. (arm_subsi3_insn): Allow constants for operand 0. (compare_scc peephole for eq case): New. (compare_scc splitters): Change CC_NOTB to CC. @@ -78,7 +1942,7 @@ * tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Skip statements that are not vectorized. * tree-vect-stmts.c (vect_get_load_cost): Update the value stored - in INSIDE_COST. + in INSIDE_COST. 2010-07-05 Mikael Pettersson @@ -97,8 +1961,7 @@ (divmodqi4): Likewise. (divmodqi4): New. (udivmodqi4): Likewise. - (divmodhiqi3): Change div/mod to HImode and extend operand 2 to - HImode. + (divmodhiqi3): Change div/mod to HImode and extend operand 2 to HImode. (udivmodhiqi3): Likewise. 2010-07-04 Jan Hubicka @@ -107,8 +1970,8 @@ 2010-07-04 Jan Hubicka - * cgraphunit.c (init_cgraph): Only initialize dump file if it is not - already initialized. + * cgraphunit.c (init_cgraph): Only initialize dump file if it + is not already initialized. 2010-07-04 Richard Sandiford @@ -253,7 +2116,7 @@ 2010-07-04 Ira Rosen Revital Eres - * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): + * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Document new arguments. * doc/tm.texi: Regenerate. * targhooks.c (default_builtin_vectorization_cost): Add new arguments. @@ -270,7 +2133,7 @@ macro for its access. (VECT_MAX_COST): Define. (vect_get_load_cost): Declare. - (vect_get_store_cost, vect_get_known_peeling_cost, + (vect_get_store_cost, vect_get_known_peeling_cost, vect_get_single_scalar_iteraion_cost): Likewise. (vect_supportable_dr_alignment): Add new argument. * tree-vect-loop.c (new_loop_vec_info): Initialize peeling hash table @@ -281,13 +2144,13 @@ vect_analyze_slp. Fix indentation. (vect_get_single_scalar_iteraion_cost): New function. (vect_get_known_peeling_cost): Likewise. - (vect_estimate_min_profitable_iters): Rename byte_misalign to npeel. - Call vect_get_single_scalar_iteraion_cost instead of cost_for_stmt per + (vect_estimate_min_profitable_iters): Rename byte_misalign to npeel. + Call vect_get_single_scalar_iteraion_cost instead of cost_for_stmt per statement. Move outside cost calculation inside unknown peeling case. Call vect_get_known_peeling_cost for known amount of peeling. * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Add data reference to the print message of forced alignment. - (vect_verify_datarefs_alignment): Update call to + (vect_verify_datarefs_alignment): Update call to vect_supportable_dr_alignment. (vect_get_data_access_cost): New function. (vect_peeling_hash, vect_peeling_hash_eq, vect_peeling_hash_insert, @@ -299,26 +2162,25 @@ check if stores are preferred or if peeling is worthy. (vect_find_same_alignment_drs): Analyze pairs of loads too. (vect_supportable_dr_alignment): Add new argument and check aligned - accesses according to it. + accesses according to it. * tree-vect-stmts.c (vect_get_stmt_cost): New function. - (cost_for_stmt): Call vect_get_stmt_cost. + (cost_for_stmt): Call vect_get_stmt_cost. (vect_model_simple_cost): Likewise. - (vect_model_store_cost): Call vect_get_stmt_cost. Call + (vect_model_store_cost): Call vect_get_stmt_cost. Call vect_get_store_cost to calculate the cost of the statement. (vect_get_store_cost): New function. - (vect_model_load_cost): Call vect_get_stmt_cost. Call + (vect_model_load_cost): Call vect_get_stmt_cost. Call vect_get_load_cost to calculate the cost of the statement. (vect_get_load_cost): New function. (vectorizable_store): Update call to vect_supportable_dr_alignment. (vectorizable_load): Likewise. - * config/spu/spu.c (spu_builtin_vectorization_cost): Add new - arguments. + * config/spu/spu.c (spu_builtin_vectorization_cost): Add new arguments. * config/i386/i386.c (ix86_builtin_vectorization_cost): Add new arguments. Handle unaligned store. * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): New. (rs6000_builtin_support_vector_misalignment): Return true for word and double word alignments for VSX. - * tree-vect-slp.c (vect_build_slp_tree): Update calls to + * tree-vect-slp.c (vect_build_slp_tree): Update calls to vect_supportable_dr_alignment and builtin_vectorization_cost. 2010-07-03 John David Anglin @@ -380,8 +2242,7 @@ * config/arm/vfp.md (*push_multi_vfp): Use vfp_register_operand as predicate for operand 1 and remove its constraint. * config/arm/predicates.md (vfp_register_operand): New. - * config/arm/arm.md (*push_multi): Remove the constraint of - operand 1. + * config/arm/arm.md (*push_multi): Remove the constraint of operand 1. (*push_fp_multi): Likewise. 2010-07-03 Eric Botcazou @@ -435,8 +2296,8 @@ (mul3add_neon, mul3negadd_neon) (reduc_splus_, reduc_smin_, reduc_smax_): Disable for NEON float modes when flag_unsafe_math_optimizations is false. - (quad_halves_v4sf): Only enable if flag_unsafe_math_optimizations - is true. + (quad_halves_v4sf): Only enable if + flag_unsafe_math_optimizations is true. * doc/invoke.texi (ARM Options): Add note about floating point vectorization requiring -funsafe-math-optimizations. @@ -471,7 +2332,7 @@ * ipa-split.c (split_function): For aggregate values, set the return slot optimization bit. When passing DECL_BY_REFERENCE, produce - * = fncall.part () + * = fncall.part (). (execute_split_functions): Do not care about DECL_BY_REFERENCE. 2010-07-02 Sandra Loosemore @@ -495,7 +2356,7 @@ * config/arm/predicates.md (imm_for_neon_logic_operand): Require TARGET_NEON. (imm_for_neon_inv_logic_operand): Likewise. - * config/arm/arm.md (define_split for logical_binary_operator): + * config/arm/arm.md (define_split for logical_binary_operator): Disable for NEON registers. (anddi3): Add new define_expand, and rename the insn. Disable this insn for NEON, where anddi3_neon now applies. @@ -755,8 +2616,7 @@ PR target/44732 * config/ia64/ia64.c (ia64_register_move_cost): Remove stray '{'. - - * config/ia64/ia64.c (ia64_register_move_cost): Fix argument types. + Fix argument types. 2010-07-01 Bernd Schmidt @@ -917,8 +2777,7 @@ Remove old union trick. Initialize constant offsets. (ao_ref_init_from_vn_reference): Likewise. Do not handle INDIRECT_REF. Init base_alias_set properly. - (vn_reference_lookup_3): Replace INDIRECT_REF handling with - MEM_REF. + (vn_reference_lookup_3): Replace INDIRECT_REF handling with MEM_REF. (vn_reference_fold_indirect): Adjust for MEM_REFs. (valueize_refs): Fold MEM_REFs. Re-evaluate constant offset for ARRAY_REFs. @@ -934,8 +2793,7 @@ bother about volatile qualifiers on pointers. (fold_const_aggregate_ref): Handle MEM_REF, do not handle INDIRECT_REF. * tree-ssa-loop-ivopts.c - * tree-ssa-loop-ivopts.c (determine_base_object): Adjust - for MEM_REF. + * tree-ssa-loop-ivopts.c (determine_base_object): Adjust for MEM_REF. (strip_offset_1): Likewise. (find_interesting_uses_address): Replace INDIRECT_REF handling with MEM_REF handling. @@ -970,7 +2828,6 @@ for ARRAY_REFs. Properly handle reference lookups that require a bit re-interpretation. (can_PRE_operation): Do not handle INDIRECT_REF. Handle MEM_REF. - * tree-sra.c * tree-sra.c (build_access_from_expr_1): Handle MEM_REF. (build_ref_for_offset_1): Remove. (build_ref_for_offset): Build MEM_REFs. @@ -984,8 +2841,7 @@ MEM_REF handling. (sra_ipa_modify_expr): Remove INDIRECT_REF handling. Use mem_ref_offset. Remove bogus folding. - (build_access_from_expr_1): Properly handle MEM_REF for - non IPA-SRA. + (build_access_from_expr_1): Properly handle MEM_REF for non IPA-SRA. (make_fancy_name_1): Add support for MEM_REF. * tree-predcom.c (ref_at_iteration): Handle MEM_REFs. * tree-mudflap.c (mf_xform_derefs_1): Adjust for MEM_REF. @@ -1008,7 +2864,7 @@ (create_nesting_tree): Allocate it. (convert_local_reference_op): Insert to be folded mem-refs. (fold_mem_refs): New function. - (finalize_nesting_tree_1): Perform defered folding of mem-refs + (finalize_nesting_tree_1): Perform defered folding of mem-refs (free_nesting_tree): Free the pointer-set. * tree-vect-stmts.c (vectorizable_store): Adjust for MEM_REF. (vectorizable_load): Likewise. @@ -1143,8 +2999,7 @@ * toplev.h (_fatal_insn_not_found, _fatal_insn): Move declarations to rtl.h. (error_for_asm, warning_for_asm): Move declarations to rtl-error.h. - * rtl.h (_fatal_insn_not_found, _fatal_insn): Move declarations - here. + * rtl.h (_fatal_insn_not_found, _fatal_insn): Move declarations here. * rtl-error.h: New. * regrename.c: Do not include toplev.h. Include rtl-error.h. * rtl-error.c: Likewise. @@ -1227,15 +3082,13 @@ (flags_needed_for_conditional): New function. (flags_from_mode): New function. (rx_compare_redundant): New function - scans backwards through - insn list to find out if condition flags are already set - correctly. + insn list to find out if condition flags are already set correctly. (TARGET_CC_MODES_COMPATIBLE): Define. * config/rx/rx-protos.h (rx_compare_redundant): Prototype. * config/rx/rx.h (BRANCH_COST): Define. (REGISTER_MOVE_COST): Define. - * config/rx/predicates (rx_source_operand): Allow all constant - types. + * config/rx/predicates (rx_source_operand): Allow all constant types. * config/rx/rx.md (addsi3): Add alternative for swapped operands. (tstsi4): New pattern. * config/rx/rx.c (rx_memory_move_cost): Define. @@ -1425,8 +3278,8 @@ * predict.h (rebuild_frequencies): Declare. * tree-inline.c (copy_cfg_body): Compute properly count & frequency of entry block and edge reaching new_entry. - (tree_function_versioning): When doing partial cloning, rebuild frequencies - when done. + (tree_function_versioning): When doing partial cloning, rebuild + frequencies when done. * passes.c (execute_function_todo): Use rebild_frequencies. 2010-06-29 Richard Guenther @@ -1612,8 +3465,8 @@ 2010-06-28 Jan Hubicka PR tree-optimization/44357 - * ipa-inline.c (add_new_edges_to_heap): Do not add edges to uninlinable - functions. + * ipa-inline.c (add_new_edges_to_heap): Do not add edges to + uninlinable functions. 2010-06-28 Philipp Tomsich @@ -1625,7 +3478,7 @@ * config/rs6000/rs6000.md (cpu): Add titan. Include "titan.md". * config/rs6000/titan.md: New file. * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=titan. - + 2010-06-28 Nathan Froyd * tree-browser.c (TB_history_stack): Convert to a VEC. @@ -1659,22 +3512,22 @@ 2010-06-28 Bingfeng Mei - * cgraph.h (struct varpool_node): new used_from_object_file flag. - (struct cgraph_local_info): new used_from_object_file flag. - * cgraph.c (dump_cgraph_node): dump used_from_object_file flag. - (cgraph_clone_node): initialize used_from_object_file. - (cgraph_create_virtual_clone): initialize used_from_object_file. - * lto-symbtab.c (lto_symtab_merge_decls_1): Set - used_from_object_file flags for symbols of LDPR_PREVAILING_DEF - when compiling with -fwhole-program. - (lto_symtab_resolve_symbols) Use LDPR_PREVAILING_DEF_IRONLY for + * cgraph.h (struct varpool_node): new used_from_object_file flag. + (struct cgraph_local_info): new used_from_object_file flag. + * cgraph.c (dump_cgraph_node): dump used_from_object_file flag. + (cgraph_clone_node): initialize used_from_object_file. + (cgraph_create_virtual_clone): initialize used_from_object_file. + * lto-symbtab.c (lto_symtab_merge_decls_1): Set + used_from_object_file flags for symbols of LDPR_PREVAILING_DEF + when compiling with -fwhole-program. + (lto_symtab_resolve_symbols) Use LDPR_PREVAILING_DEF_IRONLY for internal resolver. - * ipa.c (function_and_variable_visibility): Set externally_visible - flag of varpool_node if used_from_object_file flag is set. - (cgraph_externally_visible_p): check used_from_object_file flag. - * doc/invoke.texi (-fwhole-program option): Change description of - externally_visible attribute accordingly. - * doc/extend.texi (externally_visible): Ditto. + * ipa.c (function_and_variable_visibility): Set externally_visible + flag of varpool_node if used_from_object_file flag is set. + (cgraph_externally_visible_p): check used_from_object_file flag. + * doc/invoke.texi (-fwhole-program option): Change description of + externally_visible attribute accordingly. + * doc/extend.texi (externally_visible): Ditto. 2010-06-27 Jan Hubicka @@ -1786,8 +3639,7 @@ (visit_bb): Handle PHIs correctly. * tree-inline.c (copy_phis_for_bb): Be able to copy PHI from entry edge. - (copy_cfg_body): Produce edge from entry BB before copying - PHIs. + (copy_cfg_body): Produce edge from entry BB before copying PHIs. 2010-06-26 Richard Guenther @@ -1990,8 +3842,7 @@ * config/pa/pa.h (MODIFY_TARGET_NAME): Remove. * doc/tm.texi (MODIFY_TARGET_NAME): Don't document. - * gcc.c (enum add_del, struct modify_target, modify_target): - Remove. + * gcc.c (enum add_del, struct modify_target, modify_target): Remove. (process_command): Remove code conditional on MODIFY_TARGET_NAME. * system.h (MODIFY_TARGET_NAME): Poison.