X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=4305859024ea8602a19f62b99030076d0f9eb817;hb=f2d0e9f1eb045177c4ea903d9cda1c0cd5db64fe;hp=232da90df2e01de20887a65d83c7dc965ea82edc;hpb=63bf54cf778c9f182a9fcaf64b8bfbad4399a6d8;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 232da90df2e..4305859024e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,855 @@ +2005-02-18 Richard Sandiford + + * cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE. + * emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx. + (copy_insn_1): Likewise. Don't copy each field individually. + Reindent. + * read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead + of RTX_SIZE. + * reload1.c (eliminate_regs): Use shallow_copy_rtx. + * rtl.c (rtx_size): Rename variable to... + (rtx_code_size): ...this. + (rtx_size): New function. + (rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE. + (copy_rtx): Use shallow_copy_rtx. Don't copy each field individually. + Reindent. + (shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE. + * rtl.h (rtx_code_size): New variable. + (rtx_size): Change from a variable to a function. + (RTX_SIZE): Rename to... + (RTX_CODE_SIZE): ...this. + + PR target/9703 + PR tree-optimization/17106 + * doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document. + (Anchored Addresses): New section. + * doc/invoke.texi (-fsection-anchors): Document. + * doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise. + (SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise. + (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise. + * hooks.c (hook_bool_mode_rtx_false): New function. + * hooks.h (hook_bool_mode_rtx_false): Declare. + * gengtype.c (create_optional_field): New function. + (adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when + SYMBOL_REF_IN_BLOCK_P is true. + * target.h (output_anchor, use_blocks_for_constant_p): New hooks. + (min_anchor_offset, max_anchor_offset): Likewise. + (use_anchors_for_symbol_p): New hook. + * toplev.c (compile_file): Call output_object_blocks. + (target_supports_section_anchors_p): New function. + (process_options): Check that -fsection-anchors is only used on + targets that support it and when -funit-at-a-time is in effect. + * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL + if the decl doesn't have one. + * dwarf2out.c: Remove instantiations of VEC(rtx,gc). + * expr.c (emit_move_multi_word, emit_move_insn): Pass the result + of force_const_mem through use_anchored_address. + (expand_expr_constant): New function. + (expand_expr_addr_expr_1): Call it. Use the same modifier when + calling expand_expr for INDIRECT_REF. + (expand_expr_real_1): Pass DECL_RTL through use_anchored_address + for all modifiers except EXPAND_INITIALIZER. Use expand_expr_constant. + * expr.h (use_anchored_address): Declare. + * loop-unroll.c: Don't declare rtx vectors here. + * explow.c: Include output.h. + (validize_mem): Call use_anchored_address. + (use_anchored_address): New function. + * common.opt (-fsection-anchors): New switch. + * varasm.c (object_block_htab, anchor_labelno): New variables. + (hash_section, object_block_entry_eq, object_block_entry_hash) + (use_object_blocks_p, get_block_for_section, create_block_symbol) + (use_blocks_for_decl_p, change_symbol_section): New functions. + (get_variable_section): New function, split out from assemble_variable. + (make_decl_rtl): Create a block symbol if use_object_blocks_p and + use_blocks_for_decl_p say so. Use change_symbol_section if the + symbol has already been created. + (assemble_variable_contents): New function, split out from... + (assemble_variable): ...here. Don't output any code for + block symbols; just pass them to place_block_symbol. + Use get_variable_section and assemble_variable_contents. + (get_constant_alignment, get_constant_section, get_constant_size): New + functions, split from output_constant_def_contents. + (build_constant_desc): Create a block symbol if use_object_blocks_p + says so. Or into SYMBOL_REF_FLAGS. + (assemble_constant_contents): New function, split from... + (output_constant_def_contents): ...here. Don't output any code + for block symbols; just pass them to place_section_symbol. + Use get_constant_section and get_constant_alignment. + (force_const_mem): Create a block symbol if use_object_blocks_p and + use_blocks_for_constant_p say so. Or into SYMBOL_REF_FLAGS. + (output_constant_pool_1): Add an explicit alignment argument. + Don't switch sections here. + (output_constant_pool): Adjust call to output_constant_pool_1. + Switch sections here instead. Don't output anything for block symbols; + just pass them to place_block_symbol. + (init_varasm_once): Initialize object_block_htab. + (default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK. + (default_asm_output_anchor, default_use_aenchors_for_symbol_p) + (place_block_symbol, get_section_anchor, output_object_block) + (output_object_block_htab, output_object_blocks): New functions. + * target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro. + (TARGET_ASM_OUT): Include it. + (TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro. + (TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros. + (TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro. + (TARGET_INITIALIZER): Include them. + * rtl.c (rtl_check_failed_block_symbol): New function. + * rtl.h: Include vec.h. Declare heap and gc rtx vectors. + (block_symbol, object_block): New structures. + (rtx_def): Add a block_symbol field to the union. + (BLOCK_SYMBOL_CHECK): New macro. + (rtl_check_failed_block_symbol): Declare. + (SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags. + (SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates. + (SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2. + (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors. + * output.h (output_section_symbols): Declare. + (object_block): Name structure. + (place_section_symbol, get_section_anchor, default_asm_output_anchor) + (default_use_anchors_for_symbol_p): Declare. + * Makefile.in (RTL_BASE_H): Add vec.h. + (explow.o): Depend on output.h. + * config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default. + (TARGET_MAX_ANCHOR_OFFSET): Likewise. + (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise. + (rs6000_use_blocks_for_constant_p): New function. + +2006-02-18 John David Anglin + + * doc/install.texi (hppa*-hp-hpux*): Update for 4.1.0. + +2006-02-18 Andrew Pinski + + PR tree-opt/25680 + * tree-ssa-ccp.c (ccp_fold): Handle store CCP of REALPART_EXPR and + IMAGPART_EXPR. + +2006-02-18 Diego Novillo + + * tree-flow.h (struct var_ann_d): Rename field is_alias_tag to + is_aliased. + Update all users. + +2006-02-18 Jakub Jelinek + + PR middle-end/26334 + * stmt.c (decl_overlaps_hard_reg_set_p): Use DECL_HARD_REGISTER + instead of DECL_REGISTER. + +2006-02-18 Olivier Hainque + + PR ada/13408 + * pa.h (WIDEST_HARDWARE_FP_SIZE): Define. + +2006-02-18 Joseph S. Myers + + PR target/24837 + * config.gcc: Define UCLIBC_DEFAULT to 0 or 1. + * opth-gen.awk: Handle Var and InverseMask together. + * config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc). + * config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT. + (TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC. + (CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc + used together. + (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64, + LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. + * config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER, + UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER): Define. + (ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER. + * config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to + TARGET_GLIBC. + * config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option. + * config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + (TARGET_C99_FUNCTIONS): Don't define. + * config/i386/linux.h (DYNAMIC_LINKER): Rename to + GLIBC_DYNAMIC_LINKER. + (SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER. + * config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32, + GLIBC_DYNAMIC_LINKER64): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and + LINUX_DYNAMIC_LINKER64. + * config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32, + GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32, + UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64 + and LINUX_DYNAMIC_LINKER32. + * config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to + TARGET_GLIBC. + * config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise. + (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64, + UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64, + CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. + (LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32. + (LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64. + * config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER, + UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER): Define. + (LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE. + * config/s390/linux.h (GLIBC_DYNAMIC_LINKER32, + GLIBC_DYNAMIC_LINKER64): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and + LINUX_DYNAMIC_LINKER64. + * config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/sparc/linux.h (GLIBC_DYNAMIC_LINKER, + UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. + * config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32, + GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32, + UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define. + (LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32. + (LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64. + (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. + * config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * doc/invoke.texi (-muclibc): Remove caveat about supported + targets. + +2006-02-17 Grigory Zagorodnev + + * doc/cpp.texi (__TIMESTAMP__): Document. + +2006-02-17 Roger Sayle + + PR middle-end/25600 + * fold-const.c (fold_binary): Fold (X >> C) != 0 into X < 0 when + C is one less than the width of X (and related transformations). + * simplify_rtx.c (simplify_unary_operation_1): Transform + (neg (lt x 0)) into either (ashiftrt X C) or (lshiftrt X C) + depending on STORE_FLAG_VALUE, were C is one less then the + width of X. + +2006-02-17 Daniel Berlin + + Fix PR tree-optimization/26341 + * tree-ssa-operands.c (add_virtual_operand): Remove assert + about NAME_MEMORY_TAG's. + +2006-02-17 John David Anglin + + PR target/26255 + * pa.md: Create separate HI and QI move patterns for 32-bit and 64-bit + with hardware float support, and software float support. Add fcpy + alternative to hardware patterns. Add alternatives to copy between + general and floating-point registers to the 32-bit pattern. + * pa.c (pa_secondary_reload): Don't abort if reload tries to find a + secondary reload to load a QI or HI mode constant into a floating + point register. + * pa32-regs.h (VALID_FP_MODE_P): Allow QImode and HImode. + * pa64-regs.h (VALID_FP_MODE_P): Likewise. + +2006-02-17 Andrew Pinski + + PR target/26272 + * config/rs6000/darwin.md (load_macho_picbase_si): Add + pc to the pattern. + (load_macho_picbase_di): Likewise. + +2006-02-16 Jeff Law + + * tree-vrp.c (set_value_range_to_nonnegative): New function. + (vrp_expr_computes_nonnegative, ssa_name_nonnegative_p): Likewise. + (ssa_name_nonzero_p): Likewise. + (get_value_range): Return NULL if VRP is not running. + (extract_range_from_expr): Fallback to tree_expr_XXX_p if + VRP routines do not discover a range. + (vrp_finalize): Clear VR_VALUE to indicate VRP is not running. + * tree.h (ssa_name_nonzero_p, ssa_name_nonnegative_p): Prototype. + * fold-const.c (tree_expr_nonzero_p): For SSA_NAMEs, query VRP. + (tree_expr_nonnegative_p): Similarly. + * tree-ssa-dom.c (nonzero_vars, nonzero_vars_stack): Remove. + (restore_nonzero_vars_to_original_value): Remove. + (unsafe_associative_fp_binop): Remove. + (tree_ssa_dominator_optimize): Remove initialization and + finalization of nonzero_vars and nonzero_vars_stack. + (dom_opt_initialize_block): No longer push marker on + nonzero_vars_stack. + (dom_opt_finalize_block): No longer call + restore_nonzero_vars_to_original_value. + (record_equivalences_from_phis): No longer look for + nonzero PHI arguments. + (cprop_into_successor_phis): No longer propagate nonzero + property into PHI arguments. Lose unused argument. Caller + updated. + (record_equivalences_from_stmt): No longer record nonzero + values for SSA_NAMEs. + (lookup_avail_expr): No longer use nonzero_vars. + + * stor-layout.c (set_sizetype): Set TYPE_MAX_VALUE properly + for sizetype when sizetype is unsigned. + +2006-02-16 Denis Nagorny + + PR rtl-optimization/25603 + * reload.c (reg_inc_found_and_valid_p): New. Check REG_INC note. + (regno_clobbered_p): Use it. Reusing SETS argument for REG_INC case. + * reload1.c (choose_reload_regs): Added call of regno_clobbered_p + with new meaning of SETS. + +2006-02-16 Joseph S. Myers + + PR target/20353 + PR target/24578 + PR target/24837 + * config/linux.opt: New file. + * config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, + LINUX_DYNAMIC_LINKER): Define. + (TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC. + * config.gcc (*-*-linux*): Define extra_options. + (*-*-*uclibc*): Define UCLIBC_DEFAULT. + (arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi. + * config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to + GLIBC_DYNAMIC_LINKER. + * config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise. + (LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define. + (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. + * doc/invoke.texi (GNU/Linux Options): New section. + +2006-02-16 Eric Botcazou + + * config/sparc/sparc.md (setjmp): Rewrite. + (setjmp_32): Delete. + (setjmp_64): Likewise. + +2006-02-16 Daniel Berlin + + * tree-ssa-operands.c (access_can_touch_variable): Fix typo in + previous change. + +2006-02-16 Zdenek Dvorak + + * loop-invariant.c (invariant_for_use, check_dependencies): Fail for + read-write uses. + +2006-02-16 Zdenek Dvorak + + PR rtl-optimization/26296 + * Makefile.in (loop-invariant.c): Add except.h dependency. + * loop-invariant.c: Include except.h. + (find_invariant_insn): Ignore insns satisfying can_throw_internal. + +2005-02-16 Paul Brook + + * reload1.c (emit_reload_insns): Invalidate dead input registers used + for reloads. + +2006-02-16 Bernd Schmidt + + PR rtl-optimization/25636 + * local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test + when deciding whether an insn is an initializing insn. + +2006-02-15 Daniel Berlin + + * tree.c (init_ttree): Add STRUCT_FIELD_TAG handling. + (tree_code_size): Ditto. + * tree.h (struct tree_memory_tag): Remove parent_var. + (struct tree_struct_field_tag): New. + (SFT_OFFSET): New. + (SFT_SIZE): New. + (union tree_node): Add sft member. + * tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY + specially here. + (create_sft): Add size and offset argument, set SFT_OFFSET and + SFT_SIZE. + (create_overlap_variables_for): Update for SFT_OFFSET/SFT_SIZE. + * treestruct.def: Add TS_STRUCT_FIELD_TAG. + * tree-flow-inline.h (get_subvar_at): Update for + SFT_OFFSET/SFT_SIZE. + (var_can_have_subvars): Ditto. + (overlap_subvar): Ditto. + * print-tree.c (print_node): Print out interesting things for + SFT's. + * tree-flow.h (struct subvar): Remove offset and size members. + * tree-ssa-operands.c (get_expr_operands): Update for + get_indirect_ref_operands changes. + (get_indirect_ref_operands): Call add_virtual_operand instead of + add_stmt_operand. Only recurse on base var if requested. + (access_can_touch_variable): New function. + (add_stmt_operand): Split virtual operand handling into ... + (add_virtual_operand): Here. Add offset, size, and for_clobber + arguments. Prune alias sets. + (add_call_clobber_ops): Call add_virtual_operand. + +2006-02-15 Jakub Jelinek + + PR middle-end/26300 + * combine.c (make_extraction): Bail out if ORIG_POS is negative. + + * tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather + than TREE_CODE as index into omp_clause_num_ops array. + +2006-02-15 Uttam Pawar + + PR rtl-optimization/26184 + * modulo-sched.c (generate_reg_moves): Free bitmap vector + uses_of_defs. + * modulo-sched.c (sms_schedule): Free g_arr pointer. + * modulo-sched.c (sms_schedule_by_order): Free bitmap pointers + must_precede, must_follow and tobe_scheduled. + + PR other/26147 + * opts.c (common_handle_option): Free new_option pointer. + * df-core.c (df_analyze): Free postorder pointer. + +2006-02-15 Rafael Ávila de Espíndola + + * Makefile.in: Fix the examples about the use of stamps + +2006-02-15 Michael Matz + + PR middle-end/22275 + + * stor-layout.c (layout_decl): Zero-width bitfields aren't + influenced by maximum_field_alignment or DECL_PACKED. + (update_alignment_for_field): Ditto. + (place_field): Ditto. + * doc/extend.texi (<#pragma pack>, ): Document + this behaviour. + +2006-02-15 Paolo Bonzini + + * cfg.c (dump_flow_info): Get dump flags as an additional parameter. + (debug_flow_info): Pass it. + * alias.c (rest_of_handle_cfg): Adjust calls to dump_flow_info. + * bb-reorder.c (reorder_basic_blocks): Likewise. + * cfgcleanup.c (rest_of_handle_jump2): Likewise. + * cse.c (rest_of_handle_cse, rest_of_handle_cse2): Likewise. + * flow.c (life_analysis, recompute_reg_usage): Likewise. + * gcse.c (gcse_main, bypass_jumps): Likewise. + * ifcvt.c (rest_of_handle_if_conversion): Likewise. + * local-alloc.c (rest_of_handle_local_alloc): Likewise. + * loop-init.c (rtl_loop_init, rtl_loop_done): Likewise. + * profile.c (compute_branch_probabilities, branch_prob): Likewise. + * rtl.h (dump_flow_info): Adjust prototype. + * tracer.c (rest_of_handle_tracer, tracer): Likewise. + * var-tracking.c (variable_tracking_main): Likewise. + * passes.c (execute_todo): Obey TDF_BLOCKS for RTL. + * tree-dump.c (enable_rtl_dump_file): Enable the details and blocks + options. + +2006-02-15 Marcin Dalecki + + * tree-ssa-dom.c (dom_thread_across_edge): fix tag expression + construction. + +2006-02-14 Zdenek Dvorak + + PR tree-optimization/26209 + * tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg. + * tree-cfgcleanup.c (cleanup_control_flow): Remove dead + eh edges. + * tree-cfg.c (replace_uses_by): Do not alter cfg. + +2006-02-14 Roger Sayle + + PR middle-end/23670 + * fold-const.c (fold_binary) : Optimize (X&Y)|Y into + (X,Y) and the corresponding symmetry related transformations. + (fold_binary) : Likewise, optimize (X|Y)&Y into + (X,Y) and its symmetry related transformations. + +2006-02-14 Roger Sayle + + * dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU + and GEU. + +2006-02-14 Adam Nemet + + * simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE. + +2006-02-14 Rainer Orth + + PR bootstrap/26053 + * configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers + support COMDAT group. + * configure: Regenerate. + +2006-02-14 Roger Sayle + + PR middle-end/26279 + PR middle-end/26280 + PR middle-end/26283 + * dojump.c (do_compare_rtx_and_jump): Handle multi-word LE. + +2006-02-14 Daniel Berlin + + Fix PR tree-optimization/26260 + + * doc/invoke.texi (max-fields-for-field-sensitive): Document + param. + * params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New. + * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto. + * tree-ssa-structalias.c (create_variable_info_for): Use + MAX_FIELDS_FOR_FIELD_SENSITIVE. + +2006-02-14 Zdenek Dvorak + + * doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl): + Document. + * tree-ssa-loop-niter.c (number_of_iterations_ne, + number_of_iterations_lt, number_of_iterations_cond): Remember the shape + of the ending condition. + * tree-ssa-loop-manip.c: Include params.h. + (build_if_stmt, can_unroll_loop_p, determine_exit_conditions, + tree_unroll_loop): New functions. + * tree-pass.h (pass_loop_prefetch): Declare. + * loop.c (rest_of_handle_loop_optimize): Test for + -fprefetch-loop-arrays-rtl. + * tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h. + * timevar.def (TV_TREE_PREFETCH): New timevar. + * tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch, + pass_loop_prefetch): New. + * tree-cfgcleanup.c: Include tree-scalar-evolution.h. + (cleanup_tree_cfg_loop): Call scev_reset. + * common.opt (fprefetch-loop-arrays-rtl): Add. + * tree-ssa-loop-prefetch.c: New file. + * tree-outof-ssa.c (struct value_expr_d): Add expr_vars field. + (new_temp_expr_table): Initialize expr_vars. + (free_temp_expr_table): Cleanup expr_vars. + (check_replaceable, find_replaceable_in_bb): Prevent accumulating + expressions from being merged into one. + * tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h. + (struct tree_niter_desc): Add control, bound and cmp fields. + (tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop): + Declare. + * Makefile.in (tree-ssa-loop-prefetch.o): Add. + (tree-cfgcleanup.o): Add SCEV_H dependency. + (tree-ssa-loop-manip.o): Add PARAMS_H dependency. + * passes.c (init_optimization_passes): Add pass_loop_prefetch. + +2006-02-14 Richard Guenther + + PR tree-optimization/26258 + * tree-ssa-structalias.c (find_func_aliases): Handle aggregates + in PHI argument processing. + +2006-02-13 Adam Nemet + + * simplify-rtx.c (simplify_unary_operation_1) : Return + new expression in the requested machine mode. + +2006-02-13 Roger Sayle + + * optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx + directly, instead let do_compare_rtx_and_jump handle this for us. + * expr.c (expand_expr_real_1): Likewise. + * dojump.c (do_jump_by_parts_greater_rtx): Make static. Move + before do_jump_by_parts_greater. + (do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx. + * expr.h (do_jump_by_parts_greater_rtx): Delete prototype. + +2006-02-13 John David Anglin + + * pa/quadlib.c: Use defines instead of enum qfcmp_magic. + +2006-02-13 Zdenek Dvorak + + PR rtl-optimization/26235 + * loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats. + (invariant_expr_equal_p): Handle 'i' and 'n' formats. Fail on unknown + format. + +2006-02-13 Jeff Law + + * tree-vrp.c (extract_range_from_binary_expr): Remove handling of + TRUTH_XOR_EPR. + +2006-02-13 Jakub Jelinek + + PR middle-end/26092 + * gimplify.c (gimplify_call_expr): Don't call get_callee_fndecl + twice if decl is a builtin. When trying again, call get_callee_fndecl + first to verify it is still a builtin. + +2006-02-13 Geoffrey Keating + + * dwarf2out.c (base_type_die): Don't add AT_name here. + (subrange_type_die): Don't add AT_name here. + (modified_type_die): Rearrange code flow. Do add AT_name here. + +2006-02-13 Zdenek Dvorak + + PR rtl-optimization/26247 + PR rtl-optimization/26248 + * loop-invariant.c (may_assign_reg_p): Do not allow VOIDmode. + +2006-02-13 Richard Sandiford + + * config/floatunditf.c: Use if __LDBL_MANT_DIG__ == 113. + * config/fixtfdi.c: Likewise. + * config/fixunstfdi.c: Likewise. + * config/floatditf.c: Likewise. + +2006-02-13 Roger Sayle + + PR middle-end/24427 + * fold-const.c (fold_binary) : Transform (X&C1)|C2 + into (X,C2) if C1 is a subset of the bits of C2. Transform + (X&C1)|C2 into X|C2 if C1|C2 == ~0. Canonicalize (X&C1)|C2 as + (X&(C1&~C2))|C2. + : Canonicalize (X|C1)&C2 as (X&C2)|(C1&C2). + +2006-02-13 Josh Conner + + PR target/25376 + * varasm.c (function_section): Check for section name before + calling select_section on targets that define + USE_SELECT_SECTION_FOR_FUNCTIONS. On other targets, use + unlikely_text_section instead of hot_function_section if + first_function_block_is_cold. + +2006-02-13 J"orn Rennecke + + PR middle-end/25335 + * reload1.c (gen_reload): Also use find_replacement in UNARY_P case. + +2006-02-12 Zdenek Dvorak + + PR rtl-optimization/26222 + * function.c (assign_stack_temp_for_type): Do not reuse stack slots + after tree->rtl expansion. + * loop-invariant.c (move_invariant_reg): Use force_operand on rhs + before passing it to emit_move_insn. + +2006-02-12 Gabriel Dos Reis + + * doc/invoke.texi (-Write-strings): Document that it is enabled by + default. + * c.opt (-Wwrite-strings): Declare variable warn_write_strings. + Clarify documentation. + * c-common.h (warn_write_strings): Remove. + * c-common.c (warn_write_strings): Likewise. + * c-opts.c (c_common_init_options): Enable -Wwrite-strings by + default for C++. + +2006-02-12 Roger Sayle + + PR middle-end/25724 + * dojump.c (do_jump): Call do_compare_rtx_and_jump. + (do_jump_parts_zero_rtx): New function renamed from + do_jump_parts_equality_rtx. Made static. Add a mode argument. + (do_jump_parts_equality_rtx): New function split out from + do_jump_parts_equality. Old implementation renamed as above. + Call do_jump_parts_zero_rtx if either operand is zero. + (do_jump_parts_equality): Call do_jump_parts_equality_rtx to + do all of the heavy lifting. + (do_compare_rtx_and_jump): Handle multi-word comparisons by + calling either do_jump_by_parts_greater_rtx or + do_jump_by_parts_equality_rtx. + * expr.h (do_jump_by_parts_equality_rtx): Remove prototype. + * expmed.c (do_cmp_and_jump): Now multi-word optimization has + moved to do_compare_rtx_and_jump, call it directly. + * stmt.c (do_jump_if_equal): Remove static prototype. Add a + mode argument. Call do_compare_rtx_and_jump. + (emit_case_nodes): Update calls to do_jump_if_equal. + +2006-02-12 Zdenek Dvorak + + PR rtl-optimization/26225 + * loop-invariant.c (may_assign_reg_p): Do not allow BLKmode operands. + +2006-02-12 Zdenek Dvorak + + PR rtl-optimization/26232 + * loop-invariant.c (find_invariant_insn): Ignore insns that set CC0. + +2006-02-11 Jason Merrill + + PR tree-opt/24365 + * tree-inline.c (declare_return_variable): Just don't use the + modify target if it's a gimple complex reg and the return slot + isn't. + +2006-02-11 Kaveh R. Ghazi + + * doc/contrib.texi: Update my entry. + +2006-02-10 Geoffrey Keating + + * config/i386/darwin.h (DBX_REGISTER_NUMBER): Define. + +2006-02-10 Diego Novillo + + * tree-inline.c (estimate_num_insns_1): Make OpenMP directives + expensive. + +2006-02-10 Zdenek Dvorak + + * doc/invoke.texi (-floop-optimize2): Removed. + * toplev.c (process_options): Remove handling of flag_loop_optimize2. + * loop-init.c (gate_handle_loop2): Do not test flag_loop_optimize2. + Test flag_branch_on_count_reg only if HAVE_doloop_end. + * common.opt (floop-optimize2): Removed. + (fmove-loop-invariants): Enabled by default. + +2006-02-10 Sebastian Pop + + * tree-if-conv.c (combine_blocks): Free the result of + get_loop_exit_edges. + +2006-02-10 Jeff Law + + * fold-const.c (tree_expr_nonzero_p): Fix thinko. + + PR tree-optimization/26213 + * tree-ssa-threadedge.c (simplify_control_stmt_condition): Do not + loop trying to follow SSA_NAME_VALUE chains. + +2006-02-10 Richard Guenther + + * tree-dfa.c (get_ref_base_and_extent): When computing maxsize + deal with structures that end in implicitly variable sized arrays. + +2006-02-09 Zdenek Dvorak + + PR rtl-optimization/24762 + * df-scan.c (df_bb_refs_record): Record correct registers defined on + eh edges. + +2006-02-09 Zdenek Dvorak + + * tree-ssa-loop-ivopts.c (struct loop_data, loop_data): Removed. + (struct ivopts_data): Add regs_used field. + (tree_ssa_iv_optimize_init): Do not allocate aux fields for loops. + (ivopts_global_cost_for_size, determine_set_costs): Use data->regs_used + instead of loop_data->regs_used; + (free_loop_data): Do not free aux fields for loops. + (tree_ssa_iv_optimize): Do not pass loops to tree_ssa_iv_optimize_init + and tree_ssa_iv_optimize_finalize. + +2006-02-09 Kaz Kojima + + * config/sh/sh.h (FUNCTION_VALUE): Don't handle CHAR_TYPE. + +2006-02-09 J"orn Rennecke + + PR target/26141 + * sh.c (sh_gimplify_va_arg_expr): Don't change the result type when + computing the effective result type. + +2006-02-09 J"orn Rennecke + + PR inline-asm/16194 + * tree.h (decl_overlaps_hard_reg_set_p) Don't declare. + (tree_overlaps_hard_reg_set): Declare. + * stmt.c (decl_overlaps_hard_reg_set_p): Now static. Change return + type and signature to match function type expected by walk_tree. + (tree_overlaps_hard_reg_set): New function. + (decl_conflicts_with_clobbers_p): Rename to: + (tree_conflicts_with_clobbers_p). Take HARD_REG_SET * argument. + Use tree_overlaps_hard_reg_set. Changed caller. + * doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Replace + decl_overlaps_hard_reg_set_p with tree_overlaps_hard_reg_set. + * cris.c (cris_md_asm_clobbers): Likewise. + +2006-02-09 Bernd Schmidt + + * reload1.c (emit_input_reload_insns): Delete code that tries to + inherit using find_equiv_reg. + +2006-02-09 Gabriel Dos Reis + + * c-common.h (flag_const_strings): Don't declare. + * c-common.c (flag_const_strings): Remove. + * c.opt (fconst_strings): Remove. + * c-opts.c (c_common_handle_option): Remove . + : Don't set flag_const_strings. + (c_common_init_options): Don't set flag_const_strings. + * doc/invoke.texi (-fno-const-strings): Remove documentation. + +2006-02-09 Richard Earnshaw + + * arm.md (tlobits_cbranch): New pattern. + * arm.h (arm_select_cc_mode): For thumb, only return CC_Nmode if + testing a single bit. + +2006-02-09 Andrew Pinski + + PR tree-opt/26179 + * tree-ssa-pre.c (create_component_ref_by_pieces): + Handle RETURN_DECL like VAR_DECL. + +2006-02-09 Andrew Pinski + + PR middle-end/26134 + * fold-const.c (fold_indirect_ref_1): Fold + "*(foo *)&complexfoo" to "__real__ complexfoo" + and "((foo*)&complexfoo)[1]" to "__imag__ complexfoo". + +2006-02-09 Andrew Pinski + + * tree-flow-inline.h (var_can_have_subvars): + Volatile variables should not have subvariables. + +2006-02-09 Diego Novillo + + PR 26180 + * tree-vrp.c (vrp_int_const_binop): Detect overflow when + multiplying unsigned values. + Tidy comments. + +2006-02-09 Eric Botcazou + + * config/sparc/sparc.c (tls_call_delay): Fix oversight. + +2006-02-08 Jason Merrill + + PR c++/25979 + * tree.def: Elaborate on difference from MODIFY_EXPR. + * doc/c-tree.texi (INIT_EXPR): Likewise. + * gimplify.c (internal_get_tmp_var): Use INIT_EXPR. + (gimplify_decl_expr, gimplify_init_ctor_eval): Likewise. + (gimplify_target_expr): Likewise. + (gimplify_cond_expr): Remove target handling. + (gimplify_modify_expr): Don't clobber INIT_EXPR code here. + (gimplify_expr): Clobber it here. + (gimplify_modify_expr_rhs): Push assignment into COND_EXPR here. + Do return slot optimization if we have an INIT_EXPR. + + PR tree-opt/24365 + * tree-inline.c (declare_return_variable): Also clear + DECL_COMPLEX_GIMPLE_REG_P as needed in the modify_dest case. + + PR c++/16405 + * gimplify.c (gimplify_modify_expr_rhs): Re-enable *& handling. + + PR middle-end/22439 + * gimplify.c (gimplify_one_sizepos): Fix typo. + +2006-02-08 Jeff Law + + PR tree-optimization/21417 + * tree-ssa-threadedge.c (thread_across_edge): Reject threading + across a backedge if the control statement at the end of the + block is data dependent on other statements in the same block. + (record_temporary_equivalences_from_stmts): Remove over-conservative + test for threading across backedges. + + * tree-ssa-dce.c (remove_dead_statement): When removing a dead + control statement, handle all three special cases in the same + manner as they all have the same desired solution. No longer + special case edge flag updating when the post dominator is + the exit block. + 2006-02-08 Roger Sayle * tree.def (CHAR_TYPE): Remove. @@ -3247,7 +4099,7 @@ * basic-block.h: Remove the prototype for partition_hot_cold_basic_blocks. -2006-01-16 Rafael Ãvila de Espíndola +2006-01-16 Rafael Ãvila de EspÃ�­ndola * cppspec.c (lang_specific_spec_functions): Remove. * gcc.c (lookup_spec_function): Use static_spec_functions directly.