OSDN Git Service

PR tree-optimization/22018
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 9fa2255..6120d5c 100644 (file)
@@ -1,3 +1,443 @@
+2005-06-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR tree-optimization/22018
+       * tree-vrp.c (vrp_int_const_binop): Overhaul handling of overflow.
+
+2005-06-16  Richard Henderson  <rth@redhat.com>
+
+       PR tree-opt/22035
+       * builtins.c (fold_builtin_complex_mul): Remove.
+       (fold_builtin_complex_div): Remove.
+       (fold_builtin_1): Don't call them.
+       * fold-const.c (fold_complex_add, fold_complex_mult_parts,
+       fold_complex_mult, fold_complex_div_parts, fold_complex_div): Remove.
+       (fold_binary): Don't call them.  Don't expand complex comparisons to
+       elementary comparisons.
+       * tree-complex.c (init_dont_simulate_again): Enhance search for 
+       stmts that require decomposition.
+       (complex_visit_stmt): Handle RETURN_EXPR properly.
+       (create_components): Handle no referenced variables properly.
+       * tree.h (fold_complex_mult_parts): Remove.
+       (fold_complex_div_parts): Remove.
+
+2005-06-16  Richard Guenther  <rguenth@gcc.gnu.org>
+
+       * doc/extend.texi: Document sseregparm target attribute.
+       Clarify fastcall and regparm documentation.
+       * config/i386/i386.h: Adjust float_in_sse documentation.
+       * config/i386/i386.c: Add new target attribute sseregparm.
+       (ix86_handle_cdecl_attribute, ix86_handle_regparm_attribute):
+       Merge into ...
+       (ix86_handle_cconv_attribute): ... here.  Also handle
+       sseregparm attribute.
+       (ix86_comp_type_attributes): Compare sseregparm attributes.
+       (ix86_function_sseregparm): New function, split out from ...
+       (init_cumulative_args): ... here.  Use to decide use
+       of SSE registers and error in case of missing support.
+       (ix86_value_regno): Likewise.
+       (function_arg_advance): Do not bail out for DFmode if we need
+       to pass doubles in registers.
+       (function_arg): Likewise.
+
+2005-06-16  Paolo Bonzini  <bonzini@gnu.org>
+            Daniel Jacobowitz  <dan@codesourcery.com>
+           Alan Modra <amodra.bigpond.net.au>
+
+        * configure.ac (gcc_version): Set near the beginning.
+        (as, ld, nm): Do not link in-tree tools.  Set gcc_cv_* if tools are
+        found in the tree.  Use gcc_AC_PROG to find the tools in the system.
+        (objdump): Do not look for it.
+        * Makefile.in (NM_FOR_TARGET): Point to ./nm
+        (ORIGINAL_AS_FOR_TARGET, ORIGINAL_LD_FOR_TARGET,
+        ORIGINAL_NM_FOR_TARGET): Substitute from autoconf.
+        (as, ld, nm): New rules.
+        (libgcc.mk): Depend on them.
+        * aclocal.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL,
+        gcc_AC_BUILD_EXEEXT): New.
+        (gcc_AC_CHECK_PROG_VER): Use gcc_AC_BUILD_EXEEXT.
+        * configure: Regenerate.
+
+2005-06-16  Jan Hubicka  <jh@suse.cz>
+
+       * basic-block.h (rtl_bb_info): Break out head_, end_,
+       global_live_at_start, global_live_at_end from ...
+       (basic_block_def): ... here; update all references
+       (BB_RTL): New flag.
+       (init_rtl_bb_info): Declare.
+       * cfgexpand.c (expand_gimple_basic_block): Init bb info, set BB_RTL
+       flag.
+       * cfgrtl.c: Include ggc.h
+       (create_basic_block_structure): Init bb info.
+       (rtl_verify_flow_info_1): Check BB_RTL flag and rtl_bb_info pointer.
+       (init_rtl_bb_info): New function.
+       (rtl_merge_block, cfglayout_merge_block): Copy global_live_at_end here.
+       * cfghooks.c (merge_block): Do not copy global_live_at_end here.
+       * cfg.c (clear_bb_flags): Skip BB_RTL flag.
+       (dump_flow_info): Gueard global_live_* dumping.
+
+       * Makefile.in (cfg.o): Add new dependencies.
+       * basic-block.h (reorder_block_def): Kill
+       original/copy/duplicated/copy_number fields.
+       (BB_DUPLICATED): New flag.
+       (initialize_original_copy_tables, free_original_copy_tables,
+       set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New.
+       * cfg.c: Include hashtab.h and alloc-pool.h
+       (bb_original, bb_copy, original_copy_bb_pool): New static vars.
+       (htab_bb_copy_original_entry): New struct.
+       (bb_copy_original_hash, bb_copy_original_eq): New static functions.
+       (initialize_original_copy_tables, free_original_copy_tables,
+       set_bb_original, get_bb_original, set_bb_copy, get_bb_copy): New
+       global functions.
+       * cfghooks.c (duplicate_block): Update original/copy handling.
+       * cfglayout.c (fixup_reorder_chain): Likewise.
+       (cfg_layout_initialize): Initialize orignal_copy tables.
+       (cfg_layout_finalize): FInalize original_copy tables.
+       (can_copy_bbs_p): Use BB_DUPLICATED flag.
+       (copy_bbs): Likewise.
+       * cfgloopmanip.c (update-single_exits_after_duplication): Likewise.
+       (duplicate_loop_to_header_edge): Likewise; update handling of
+       copy_number.
+       (loop_version): Likewise.
+       * dominance.c (get_dominated_by_region): Use BB_DUPLICATED_FLAG.
+       * except.c (expand_resx_expr): Check that reg->resume is not set.
+       * loop-unroll.c (unroll_loop_constant_iterations,
+       unroll_loop_runtime_iterations, apply_opt_in_copies): Update
+       copy/original handling.
+       * loop-unwitch.c (unswitch_loop): Likewise.
+       * tree-cfg.c (create_bb): Do not initialize RBI.
+       (disband_implicit_edges): Do not kill RBI.
+       (add_phi_args_after_copy_bb): Use new original/copy mapping.
+       (add_phi_args_after_copy): Use BB_DUPLICATED flag.
+       (tree_duplicate_sese_region): Update original/copy handling.
+       * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
+       * tree-ssa-loop-manip.c (copy_phi_node_args): Likewise.
+       * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Likewise.
+
+2005-06-15  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR tree-opt/21923
+       * tree-ssa.c (tree_ssa_useless_type_conversion_1): Conversions between
+       integer types whos ranges are different are not useless.
+
+2005-06-15  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR tree-opt/22024
+       * tree-ssa-reassoc.c (init_reassoc): Also give chain decl a distint
+       rank.
+
+2005-06-15  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-structalias.c (dump_solution_for_var): Reformat
+       output.
+       (dump_sa_points_to_info): Make extern.
+       (debug_sa_points_to_info): New.
+       * tree-ssa-structalias.h (TREE_SSA_STRUCTALIAS_H): Rename from
+       TREE_ALIAS_COMMON.
+       (dump_sa_points_to_info): Declare.
+       (debug_sa_points_to_info): Declare.
+
+2005-06-15  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * c-tree.h (default_function_array_conversion): Declare.
+       * c-typeck.c (default_function_array_conversion): Export.  Correct
+       comment.
+       (default_conversion): Do not call
+       default_function_array_conversion.  Do not allow FUNCTION_TYPE.
+       (build_function_call): Call default_function_array_conversion on
+       the function.
+       (convert_arguments): Do not call it on the function arguments.
+       (build_unary_op): Do not allow ARRAY_TYPE or FUNCTION_TYPE for
+       TRUTH_NOT_EXPR.  Call default_function_array_conversion for taking
+       address of ARRAY_REF.
+       (build_compound_expr): Do not call
+       default_function_array_conversion.
+       (build_c_cast): Do not call default_function_array_conversion.
+       (convert_for_assignment): Do not call default_conversion.
+       (digest_init): Call default_function_array_conversion to convert
+       string constants and compound literals to pointers, but not
+       otherwise.
+       (output_init_element): Likewise.
+       (build_asm_expr): Do not call default_function_array_conversion.
+       (c_process_expr_stmt): Likewise.
+       (c_objc_common_truthvalue_conversion): Likewise.  Do not allow
+       FUNCTION_TYPE.
+       * c-parser.c (c_parser_expression_conv): New.
+       (c_parser_asm_operands, c_parser_expr_list): Add convert_p
+       argument.  All callers changed.  Call
+       default_function_array_conversion if convert_p.
+       (c_parser_initializer, c_parser_initval): Call
+       default_function_array_conversion except for string constants and
+       compound literals.
+       (c_parser_initelt): Call default_function_array_conversion for
+       ObjC expression received.
+       (c_parser_statement_after_labels): Call c_parser_expression_conv
+       for return and expression statements.
+       (c_parser_paren_condition, c_parser_for_statement,
+       c_parser_conditional_expression): Call c_parser_expression_conv.
+       (c_parser_expr_no_commas, c_parser_conditional_expression,
+       c_parser_binary_expression, c_parser_cast_expression,
+       c_parser_unary_expression): Call
+       default_function_array_conversion.
+
+2005-06-15  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR
+       when the result overflows.
+
+2005-06-15  David Ung  <davidu@mips.com>
+
+       * config/mips/mips.c (mips_rtx_cost_data): Add cost for 4kc, 4kp,
+       24k and 24kx.
+       
+2005-06-15  Richard Sandiford  <richard@codesourcery.com>
+
+        * doc/invoke.texi (-mips16): Fix typo.
+
+2005-06-15  David Ung  <davidu@mips.com>
+
+       * config/mips/mips.h (GENERATE_MIPS16E): New definition.
+       * config/mips/mips.md (zero_extend<SHORT:mode><GPR:mode>2):
+       Changed expand condition to exclude generating of "and" if
+       GENERATE_MIPS16E is true.
+       (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for
+       matching mips16e zeb/zeh.
+       (*extend<SHORT:mode><GPR:mode>2_mips16e): New pattern for matching
+       mips16e seb/seh. 
+       (*extend<SHORT:mode><GPR:mode>2): Disable this pattern for
+       GENERATE_MIPS16E. 
+        * doc/invoke.texi (MIPS Options): Add comment to -mips16
+       indicating MIPS16e ASE is used if targetting for MIPS32 or MIPS64.
+       
+2005-06-15  Diego Novillo  <dnovillo@redhat.com>
+
+       PR 22018
+       * tree-vrp.c (vrp_int_const_binop): New.
+       (extract_range_from_binary_expr): Call it.
+       Unify handling division and multiplication.
+
+2005-06-15  Aldy Hernandez  <aldyh@redhat.com>
+
+       * c-common.h (same_scalar_type_ignoring_signedness): Protoize.
+
+       * c-common.c (same_scalar_type_ignoring_signedness): New.
+
+       * c-typeck.c (build_binary_op): Check compatability of vector
+       types.  Move error report after switch.
+       Do not clobber code[01] on *_DIV_EXPR case.
+
+       * testsuite/gcc.dg/simd-1.c: Update error messages.
+       * testsuite/gcc.dg/simd-1b.c: Re-enable tests.  Update error
+       messages.
+       * testsuite/gcc.dg/simd-2.c: Update error messages.
+       * testsuite/gcc.dg/simd-4.c: New.
+
+2005-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * Makefile.in (local-alloc.o): Depend on $(GGC_H) and reload.h.
+       * local-alloc.c: Include "ggc.h" and "reload.h".
+       (struct equivalence): New member is_arg_equivalence.
+       (local_alloc): Always call update_equiv_regs.
+       (update_equiv_regs): Allocate reg_equiv_init; set reg_equiv_init_size.
+       Detect equivalences made by stores to memory in a second pass.
+       Return early if not optimizing.
+       Initialize reg_equiv_init for all equivalences; treat equivalences for
+       REG_EQUIV notes existing before this pass specially.
+       (no_equiv): Don't clear reg_equiv_init or remove notes if the
+       is_arg_equivalence field is set.
+       * reload.h (reg_equiv_init, reg_equiv_init_size): Declare.
+       * reload1.c (reg_equiv_init): No longer static.
+       (reg_equiv_init_size): New variable.
+       (reload): Don't allocate reg_equiv_init; don't free it when done but
+       clear it.
+       Restructure equivalence set up code not to set reg_equiv_init, but to
+       clear it when we can't use an equivalence.
+       Undo change disabling equivalences for MEM_READONLY_P memrefs.
+       Dump equivalencing insns to dump_file.
+
+2005-06-14  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.c (machine_function): Add varargs_size field.
+       (mips_setup_incoming_varargs): Store the amount of extra stack space
+       there rather than in *pretend_size.  When saving registers, always
+       expect virtual_incoming_args_rtx to point to the start of the
+       pretend arguments.
+       (mips_va_start): Remove alignment hack.  Handle all
+       !EABI_FLOAT_VARARGS_P cases in the same way.
+       (compute_frame_size): Handle varargs_size.  Remove the redundant
+       !TARGET_OLDABI condition in the handling of pretend_args_size.
+       (mips_initial_elimination_offset): Remove the now-redundant check
+       of TARGET_NEWABI.
+
+2005-06-14  Jeff Law  <law@redhat.com>
+
+       * tree-vrp.c (local_fold): Remove.
+       (simplify_using_ranges): Use fold_convert, not local_fold.  Tweak
+       DIV/MOD case slightly for readability.
+
+2005-06-14  Frank Ch. Eigler  <fche@redhat.com>
+
+       PR mudflap/21023
+       * tree-mudflap.c (mudflap_finish_file): Exclude non-public
+       rather than static objects (!) from libmudflap registration.
+
+2005-06-14  Richard Sandiford  <richard@codesourcery.com>
+
+       * opt-functions.awk (global_state_p, needs_state_p, static_var): New.
+       (var_ref): Take the option's flags as a second parameter.  Check
+       static_var.
+       * optc-gen.awk: Declare local state variables.  Pass flags to var_ref.
+
+2005-06-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR target/20301
+       * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
+       unsigned index numbers.
+
+2005-06-13  Geoffrey Keating  <geoffk@apple.com>
+
+       * Makefile.in (install-man): Doesn't really depend on installdirs.
+       (various rules for installing manpages): Do depend on installdirs.
+
+2005-06-14  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * unwind-dw2-fde-darwin.c (examine_objects): Fix aliasing in
+       read_encoded_value_with_base call.
+       * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Likewise.
+       * unwind-dw2-fde.c (_Unwind_Find_FDE): Likewise.
+       * unwind-dw2.c (extract_cie_info): Fix aliasing in
+       read_encoded_value call.
+       (execute_cfa_program, uw_frame_state_for): Likewise.
+
+2005-06-13  Roger Sayle  <roger@eyesopen.com>
+
+       PR rtl-optimization/22053
+       * reg-stack.c (compensate_edge): Correct mistake in the assertion
+       checking of EDGE_ABNORMAL_CALL edges; complex return values can
+       result in the top two stack slots, st(0) and st(1), being live.
+
+2005-06-13  Jeff Law  <law@redhat.com>
+
+       * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): No longer
+       simplify DIV, MOD or ABS expressions using VRP information.
+       Remove WALK_DATA parameter.  Prototype and all callers updated.
+       (eliminate_redundant_computations): Remove WALK_DATA parameter.
+       Prototype and all callers updated.
+       (optimize_stmt): WALK_DATA parameter is now unused.
+
+       * tree-vrp.c (local_fold): New function.  Like fold, but
+       strips useless type conversions in the result.
+       (simplify_using_ranges): New function, largely cribbed from
+       tree-ssa-dom.c::simplify_rhs_and_lookup_avail_expr.
+       (vrp_finalize): Call simplify_using_ranges.
+
+2005-06-13  Mark Mitchell  <mark@codesourcery.com>
+
+       * config/i386/x86-64.h (ASM_SPEC): Explicitly pass --64 to the
+       assembler in 64-bit mode.
+
+2005-06-13  David Edelsohn  <edelsohn@gnu.org>
+
+       Revert scc_operand patch.
+       * config/rs6000/predicates.md (scc_operand): Delete.
+       * config/rs6000/rs6000.md (scc_operand): Change to scc_eq_operand.
+
+2005-06-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * trans-expr.c (gfc_conv_function_call): Return int instead of
+       void.  Use a local variable for has_alternate_specifier and
+       return it.  Avoid modification of function type's return value
+       in place, since it may be shared.
+       * trans.h (has_alternate_specifier): Remove.
+       (gfc_conv_function_call): Change return type.
+       * trans-stmt.c (has_alternate_specifier): Remove.
+       (gfc_trans_call): Add a local has_alternate_specifier variable,
+       set it from gfc_conv_function_call return value.
+
+2005-06-13  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR middle-end/21985
+       * fold-const.c (split_address_to_core_and_offset): Always return
+       the address of the base object.
+
+2005-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * doc/invoke.texi (Blackfin Options): Document -mlong-calls.
+
+2005-06-12  Richard Henderson  <rth@redhat.com>
+
+       PR tree-opt/21994
+       * tree-complex.c (update_complex_components_on_edge): New.
+       (update_parameter_components): Use it.
+       (update_phi_components): Likewise.
+       (expand_complex_move): Likewise for is_ctrl_altering_stmt.
+
+2005-06-12  James A. Morrison  <phython@gcc.gnu.org>
+
+       PR tree-optimization/14796
+       * fold-const (fold_binary): Transform (X << C) >> C into X & (-1>>C)
+       for unsigned types.
+
+2005-06-12  Kazu Hirata  <kazu@codesourcery.com>
+
+       * cgraphunit.c, tree-ssa-loop-ivopts.c,
+       tree-ssa-structalias.c, tree-vectorizer.c, tree-vectorizer.h,
+       config/sparc/sparc.c: Fix comment typos.
+
+2005-06-12  Richard Earnshaw  <richard.earnshaw@arm.com>
+
+       * arm/ieee754-df.s (aeabi_dcmpeq, aeabi_dcmplt, aeabi_dcmple)
+       (aeabi_dcmpge, aeabi_dcmpgt): Maintain 8-byte stack alignment.
+       * arm/ieee754-sf.s (aeabi_l2f, aeabi_fcmpeq, aeabi_fcmplt)
+       (aeabi_fcmple, aeabi_fcmpge, aeabi_fcmpgt): Likewise.
+
+2005-06-12  James A. Morrison  <phython@gcc.gnu.org>
+
+       PR tree-optimization/14796
+       * fold-const.c (fold_binary): Transform (A >> C) << C into
+       one BIT_AND_EXPR.
+       <shift>: Transform (A OP c1) OP c2 into A OP (c1 + c2).
+
+2005-06-11  Geoffrey Keating  <geoffk@apple.com>
+
+       * config/rs6000/predicates.md (reg_or_arith_cint_operand): Delete.
+       (reg_or_add_cint_operand): Rename from reg_or_add_cint64_operand.
+       Handle SImode.
+       (reg_or_sub_cint_operand): Likewise.
+       (mask_operand): Handle DImode.
+       (mask64_operand): Delete.
+       (and64_operand): Delete.
+       * config/rs6000/rs6000.c (num_insns_constant): Use mask_operand
+       instead of mask64_operand.
+       (print_operand): Likewise.
+       (rs6000_rtx_costs): Use mask_operand and reg_or_add_cint_operand and
+       reg_or_sub_cint_operand instead of *64_* variants.
+       * config/rs6000/rs6000.h (EXTRA_CONSTRAINT): Use mask_operand
+       instead of mask64_operand.
+       * config/rs6000/rs6000.md: Use mask_operand and and_operand instead
+       of *64_* variants.
+       (FP): New.
+       (add_op2): Delete.
+       (add<mode>3): Use reg_or_add_cint_operand.
+       (sub_op2): Delete.
+       (sub<mode>3): Use reg_or_sub_cint_operand.
+       (udiv<mode>3, div<mode>3, div<mode>3_no_mq, mod<mode>3,
+       mov<mode>_internal2, mov<mode>, cmp<mode>, cmp<mode>,
+       cmp<mode>_internal1, indirect_jump<mode>, ctr<mode>,
+       ctr<mode>_internal1, ctr<mode>_internal2, ctr<mode>_internal5,
+       ctr<mode>_internal6, save_fpregs_<mode>, return_internal_<mode>,
+       return_and_restore_fpregs_<mode>, eh_set_lr_<mode>,
+       various unnamed patterns): New.
+       (udivsi3, divsi3, divsi3_no_mq, modsi3, movsi_internal2, movsi,
+       cmpsi, cmpsi_internal1, indirect_jumpsi, ctrsi, ctrsi_internal1,
+       ctrsi_internal2, ctrsi_internal5, ctrsi_internal6, save_fpregs_si,
+       return_internal_si, return_and_restore_fpregs_si, eh_set_lr_si,
+       udivdi3, divdi3, divdi3_no_mq, moddi3, movdi_internal2, movdi,
+       cmpdi, cmpdi_internal1, indirect_jumpdi, ctrdi, ctrdi_internal1,
+       ctrdi_internal2, ctrdi_internal5, ctrdi_internal6, save_fpregs_di,
+       return_internal_di, return_and_restore_fpregs_di, eh_set_lr_di,
+       movhi, movqi, cmpsf, cmpdf, cmptf, various unnamed patterns):
+       Delete.
+
 2005-06-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
        * rtl.h (to_rtx_code): Remove.
        tag if VAR has just one in its may_aliases list.
 
 2005-06-10  Fariborz Jahanian <fjahanian@apple.com>
+
        * rs6000/predicates.md (scc_operand): New.
        * rs6000/rs6000.md : Use scc_operand for eq:SI compares.
 
 
 2005-05-17  Paolo Bonzini  <bonzini@gnu.org>
 
-       * tree-ssa-math-opts.c: New file.
-
-2005-05-17  Paolo Bonzini  <bonzini@gnu.org>
-
        * Makefile.in: Add tree-ssa-math-opts.c.
        * expr.c (expand_expr_real_1) <case RDIV_EXPR>: Never emit as a*(1/b).
        * fold-const.c (distribute_real_division): New.