+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.