+2004-07-14 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c (function_arg_advance): Check for args
+ that must be passed in the stack.
+ (xtensa_gimplify_va_arg_expr): Skip special-case padding for small
+ arguments if the size is not a constant.
+
+2004-07-14 Per Bothner <per@bothner.com>
+
+ * c-typeck.c (emit_side_effect_warnings): Use EXPR_HAS_LOCATION
+ instead of EXPR_LOCUS in a boolean context, which is always true
+ if --enable-mapped-location.
+ * stmt.c (warn_if_unused_value): Likewise. Also use EXPR_LOCATION.
+
+2004-07-14 Richard Henderson <rth@redhat.com>
+
+ * dominance.c (struct dom_info): Add fake_exit_edge.
+ (init_dom_info): Allocate it.
+ (free_dom_info): Free it.
+ (calc_dfs_tree): Set it. Handle noreturn and infinite loops
+ in two passes.
+ (calc_idoms): Honor fake_exit_edge.
+
+2004-07-13 Jason Merrill <jason@redhat.com>
+
+ * tree-gimple.c (is_gimple_reg_rhs, is_gimple_mem_rhs): New fns.
+ (rhs_test_for): New fn.
+ (is_gimple_tmp_rhs): Rename from is_gimple_rhs.
+ * tree-gimple.h: Declare them.
+ * gimplify.c (gimplify_modify_expr): Use the new fns.
+
+2004-07-14 Richard Henderson <rth@redhat.com>
+
+ * config/arm/arm-protos.h (arm_va_arg): Remove.
+ * config/arm/arm.c (arm_va_arg): Remove.
+ (arm_init_expanders): Fix alignment of arg_pointer_rtx.
+ * config/arm/arm.h (EXPAND_BUILTIN_VA_ARG): Remove.
+
+2004-07-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.c (fix_range): New function to mark a range(s) of registers as
+ fixed registers.
+ (override_options): Call fix_range if the -mfixed-range option string
+ is not empty.
+ * pa.h (TARGET_OPTIONS): Add -mfixed-range option.
+ * doc/invoke.texi (-mfixed-range): Document new option.
+
+2004-07-14 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (function_arg_padding): Do not pad SFmode
+ for TARGET_64BIT.
+ (rs6000_gimplify_va_arg): Use size_int instead of build_int_2.
+
+2004-07-14 Roger Sayle <roger@eyesopen.com>
+
+ * expmed.c (expand_sdiv_pow2): New function to expand signed division
+ by a positive power of two, split out from expand_divmod. Provide
+ an alternate implementation when shifts are expensive. Lower the
+ threshold for using a branchless implementation to BRANCH_COST >= 2.
+ (expand_divmod): Call expand_sdiv_pow2 for suitable divisions.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * tree-dfa.c (make_rename_temp): *Really* work just
+ like create_tmp_var if called while outside SSA form.
+
+2004-07-14 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.md ("udivsi3"): Ensure trap is generated
+ for division by zero.
+ ("umodsi3"): Likewise.
+
+2004-07-14 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips_output_move): When generating mips16 code,
+ force loads of negative constants to be split.
+ * config/mips/mips.md (*movhi_mips16, *movqi_mips16): Likewise.
+ Generalize SImode li/neg splitter to cope with other modes.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * expmed.c: Remove more references to QUEUED in the comments.
+ * expr.c: Likewise.
+
+2004-07-14 Richard Sandiford <rsandifo@redhat.com>
+
+ Revert:
+ 2004-07-13 Richard Henderson <rth@redhat.com>
+ * config/mips/mips.c (mips_pass_by_reference): Handle mode sizes
+ correctly.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * tree-dfa.c (make_rename_temp): Work just like
+ create_tmp_var if called while outside SSA form.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * expr.c (enqueue_insn, finish_expr_for_function,
+ protect_from_queue, queued_subexp_p, mark_queue,
+ emit_insns_enqueued_after_mark, emit_queue,
+ expand_increment): Remove.
+ (store_constructor): Expand increment as an assignment.
+ (expand_expr_real_1 <case PREINCREMENT_EXPR,
+ case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR,
+ case POSTDECREMENT_EXPR>): Abort.
+ * expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY,
+ QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function,
+ protect_from_queue, emit_queue, queued_subexp_p): Remove.
+ * function.h (pending_chain, x_pending_chain): Remove.
+ * rtl.def (QUEUED): Remove.
+
+ * emit-rtl.c (copy_insn_1, copy_most_rtx,
+ set_used_flags, verify_rtx_sharing): Remove references to QUEUED.
+ * genattrtab.c (attr_copy_rtx, clear_struct_flag,
+ encode_units_mask): Likewise.
+ * local-alloc.c (equiv_init_varies_p): Likewise.
+ * rtl.c (copy_rtx): Likewise.
+ * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
+ * simplify-rtx.c (simplify_gen_subreg): Likewise.
+ * config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise.
+
+ * builtins.c (expand_builtin, expand_builtin_apply,
+ expand_builtin_mathfn, expand_builtin_mathfn_2,
+ expand_builtin_mathfn_3, expand_builtin_setjmp_setup):
+ Remove calls to emit_queue and protect_from_queue.
+ * calls.c (expand_call, precompute_arguments,
+ precompute_register_parameters, rtx_for_function_call,
+ store_one_arg): Likewise.
+ * dojump.c (do_compare_and_jump, do_jump): Likewise.
+ * explow.c (memory_address): Likewise.
+ * expmed.c (clear_by_pieces_1, clear_storage,
+ clear_storage_via_libcall, emit_group_load,
+ emit_group_store, emit_store_flag,
+ expand_expr_real_1, store_by_pieces,
+ store_constructor, store_expr, try_casesi,
+ try_tablejump): Likewise.
+ * function.c (expand_pending_sizes): Likewise.
+ * optabs.c (emit_cmp_and_jump_insns,
+ emit_conditional_add, emit_conditional_move,
+ expand_fix, expand_float, prepare_cmp_insn): Likewise.
+ * stmt.c (emit_case_bit_tests,
+ expand_asm_expr, expand_computed_goto,
+ expand_decl_init, expand_end_case_type,
+ expand_end_stmt_expr, expand_expr_stmt_value,
+ expand_return, expand_start_case,
+ optimize_tail_recursion): Likewise.
+ * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
+ * config/s390/s390.c (s390_expand_cmpmem): Likewise.
+
+2004-07-14 Ben Elliston <bje@au.ibm.com>
+
+ * vec.h: Comment fix.
+
+2004-07-13 Richard Henderson <rth@redhat.com>
+
+ * target.h (struct gcc_target): Add calls.pass_by_reference.
+ * target-def.h (TARGET_PASS_BY_REFERENCE): New.
+ * function.c (pass_by_reference): Use the hook.
+ * system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison.
+ * targhooks.c, targhooks.h (hook_pass_by_reference_false): New.
+ (hook_pass_by_reference_must_pass_in_stack): New.
+ * config/alpha/alpha.c (function_arg): Don't query pass-by-ref.
+ (alpha_pass_by_reference): New.
+ (TARGET_PASS_BY_REFERENCE): New.
+ * config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/arc/arc.c (arc_pass_by_reference): New.
+ (TARGET_PASS_BY_REFERENCE): New.
+ * config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): True.
+ * config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove.
+ * config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New.
+ (arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference.
+ * config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/cris/cris.c (cris_pass_by_reference): New.
+ (TARGET_PASS_BY_REFERENCE): New.
+ * config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref.
+ (FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise.
+ (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New.
+ * config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill.
+ * config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New.
+ (frv_function_arg_pass_by_reference): Remove.
+ * config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/i386/i386-protos.h (function_arg_pass_by_reference): Remove.
+ * config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New.
+ (ix86_pass_by_reference): Rename from function_arg_pass_by_reference.
+ * config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill.
+ * config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New.
+ (ia64_pass_by_reference): Rename from
+ ia64_function_arg_pass_by_reference.
+ * config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill.
+ * config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New.
+ (iq2000_pass_by_reference): Rename from function_arg_pass_by_reference.
+ * config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
+ * config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove.
+ * config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New.
+ (m32r_pass_by_reference): Adjust prototype. Make static.
+ Handle mode sizes correctly.
+ * config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c
+ (m68hc11_function_arg_pass_by_reference): Remove.
+ * config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
+ * config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New.
+ * config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/mips/mips-protos.h (function_arg_pass_by_reference): Remove.
+ * config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New.
+ (mips_va_arg): Use pass_by_reference.
+ (mips_pass_by_reference): Rename from function_arg_pass_by_reference.
+ Handle mode sizes correctly.
+ * config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
+ * config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill.
+ * config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New.
+ (mmix_pass_by_reference): Rename from
+ mmix_function_arg_pass_by_reference.
+ * config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): True.
+ * config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New.
+ (mn10300_pass_by_reference): New.
+ * config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): True.
+ * config/pa/pa.c (pa_pass_by_reference): New.
+ (TARGET_PASS_BY_REFERENCE): New.
+ * config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): True.
+ * config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill.
+ * config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New.
+ (rs6000_pass_by_reference): Rename from function_arg_pass_by_reference.
+ * config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill.
+ * config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New.
+ (s390_pass_by_reference): Rename from
+ s390_function_arg_pass_by_reference.
+ (s390_function_arg_advance): Don't query pass-by-ref.
+ (s390_function_arg): Likewise.
+ (s390_gimplify_va_arg): Use pass_by_reference.
+ (s390_call_saved_register_used): Likewise.
+ * config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New.
+ (shcompact_byref, sh_pass_by_reference): New.
+ * config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (SHCOMPACT_BYREF): Remove.
+ * config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill.
+ * config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New.
+ (sparc_pass_by_reference): Rename from function_arg_pass_by_reference.
+ (sparc_gimplify_va_arg): Use pass_by_reference.
+ * config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New.
+ (v850_pass_by_reference): New.
+ * config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ (FUNCTION_ARG_CALLEE_COPIES): True.
+ * doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from
+ FUNCTION_ARG_PASS_BY_REFERENCE docs.
+
+2004-07-14 Richard Henderson <rth@redhat.com>
+ Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips-protos.h (mips_va_arg): Delete.
+ * config/mips/mips.h (EXPAND_BUILTIN_VA_ARG): Delete.
+ * config/mips/mips.c: Include tree-gimple.h.
+ (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
+ (mips_arg_info): Remove special handling of must_pass_in_stck args.
+ (mips_gimplify_va_arg_expr): Rewritten from mips_va_arg.
+ (function_arg_pass_by_reference): Return true if must_pass_in_stack.
+
+2004-07-13 Bob Wilson <bob.wilson@acm.org>
+
+ * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Swap
+ arguments for COND_EXPR in big-endian adjustment code.
+
+2004-07-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa-64.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Delete.
+ * pa.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Modify for hppa64.
+ * pa32-regs.h (REG_ALLOC_ORDER): Reorder caller-saved registers.
+ * pa64-regs.h (REG_ALLOC_ORDER): Likewise.
+
+2004-07-13 Diego Novillo <dnovillo@redhat.com>
+
+ PR tree-optimization/16443
+ * tree-ssa-alias.c: Add more description for
+ CALL_CLOBBERED_VARS and ADDRESSABLE_VARS.
+ * tree-ssa-operands.c (get_asm_expr_operands): Re-order the
+ clobbering of call-clobbered and addressable variables. If
+ there are any before aliases have been computed, add them.
+
+2004-07-13 Diego Novillo <dnovillo@redhat.com>
+
+ * tree-optimize.c (execute_todo): Flush DUMP_FILE before
+ verification.
+
+2004-07-13 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_gimplify_va_arg): Use size_int instead
+ of build_int_2. Convert both operands of PLUS_EXPR and MULT_EXPR
+ to the same type.
+
+2004-07-13 Per Bothner <per@bothner.com>
+
+ * collect2.c (main): Handle --no-demangle and --demangle flags.
+
+2004-07-13 Sebastian Pop <pop@cri.ensmp.fr>
+
+ * Makefile.in (OBJS-common): Add tree-data-ref.o.
+ (tree-scalar-evolution.o): Add missing dependences on tree-pass.h flags.h.
+ (tree-data-ref.o): New rule.
+ * lambda.h: New file.
+ * tree-data-ref.c: New file.
+ * tree-data-ref.h: New file.
+ * tree.c (int_cst_value, tree_fold_gcd): New functions.
+ * tree.h (int_cst_value, tree_fold_gcd): Declared here.
+
+2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/13926
+ * config/sparc/sparc-protos.h (output_ubranch): New prototype.
+ * config/sparc/sparc.c (output_ubranch): New function.
+ * config/sparc/sparc.md (jump pattern): Use it.
+
+2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/16494
+ * config/sparc/sparc.c (output_cbranch): Properly guard
+ the code handling far branches with TARGET_V9.
+ * config/sparc/sparc.md (length attribute): Document the
+ side-effect of having a length greater or equal to 3.
+
+2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
+ Lloyd Parkes <lloyd@must-have-coffee.gen.nz>
+
+ PR target/15186
+ * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Pass
+ /usr/ucblib/sparcv9 as -R path when -compat-bsd is specified.
+
+2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
+ Martin Sebor <sebor@roguewave.com>
+
+ PR target/12602
+ * doc/invoke.texi (SPARC options): Document -threads
+ and -pthreads on Solaris.
+
+2004-07-13 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (std_gimplify_va_arg_expr): Handle types passed
+ by reference.
+ (ind_gimplify_va_arg_expr): Remove.
+ * tree.h (ind_gimplify_va_arg_expr): Remove.
+ * config/pa/pa.c (hppa_gimplify_va_arg_expr): Don't use it.
+ * config/mmix/mmix.c (mmix_function_arg_pass_by_reference): Allow
+ argsp to be null.
+
+ * config/arc/arc.c (arc_gimplify_va_arg_expr): Remove.
+ (TARGET_GIMPLIFY_VA_ARG_EXPR): Remove.
+ * config/cris/cris.c, config/fr30/fr30.c, config/frv/frv.c,
+ config/iq2000/iq2000.c, config/m32r/m32r.c, config/mmix/mmix.c,
+ config/mn10300/mn10300.c, config/v850/v850.c: Similarly.
+
+2004-07-13 Richard Henderson <rth@redhat.com>
+
+ * function.c (pass_by_reference): New.
+ (assign_parm_find_data_types): Use it.
+ * calls.c (initialize_argument_information): Likewise.
+ (emit_library_call_value_1): Likewise.
+ * expr.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
+ * function.h (pass_by_reference): Declare.
+
+2004-07-13 Richard Henderson <rth@redhat.com>
+
+ * target-def.h (TARGET_MUST_PASS_IN_STACK): New.
+ * target.h (struct gcc_target): Add calls.must_pass_in_stack.
+ * expr.h (MUST_PASS_IN_STACK): Remove.
+ * system.h (MUST_PASS_IN_STACK): Poison.
+ * tree.h (must_pass_in_stack_var_size): Declare.
+ (must_pass_in_stack_var_size_or_pad): Declare.
+ * calls.c (must_pass_in_stack_var_size): New.
+ (must_pass_in_stack_var_size_or_pad): Rename from
+ default_must_pass_in_stack.
+ * config/alpha/alpha.c (unicosmk_must_pass_in_stack): New.
+ (TARGET_MUST_PASS_IN_STACK): New.
+ * config/alpha/unicosmk.h (MUST_PASS_IN_STACK): Remove.
+ * config/fr30/fr30.c (fr30_must_pass_in_stack): New.
+ (TARGET_MUST_PASS_IN_STACK): New.
+ * config/fr30/fr30.h (MUST_PASS_IN_STACK): Remove.
+ * config/frv/frv.c (frv_must_pass_in_stack): New.
+ (TARGET_MUST_PASS_IN_STACK): New.
+ * config/frv/frv.h (MUST_PASS_IN_STACK): Remove.
+ * config/i386/i386-protos.h (ix86_must_pass_in_stack): Remove.
+ * config/i386/i386.c (TARGET_MUST_PASS_IN_STACK): New.
+ (ix86_must_pass_in_stack): Make static.
+ * config/i386/i386.h (MUST_PASS_IN_STACK): Remove.
+ * config/ia64/ia64.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/ia64/ia64.h (MUST_PASS_IN_STACK): Remove.
+ * config/m32r/m32r.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/m32r/m32r.h (MUST_PASS_IN_STACK): Remove.
+ * config/mcore/mcore-protos.h (mcore_must_pass_on_stack): Remove.
+ * config/mcore/mcore.c (TARGET_MUST_PASS_IN_STACK): New.
+ (mcore_must_pass_on_stack): Remove.
+ * config/mcore/mcore.h (MUST_PASS_IN_STACK): Remove.
+ * config/mips/mips.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/mips/mips.h (MUST_PASS_IN_STACK): Remove.
+ * config/pa/pa.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/pa/pa.h (MUST_PASS_IN_STACK): Remove.
+ * config/rs6000/aix.h (MUST_PASS_IN_STACK): Remove.
+ * config/rs6000/linux64.h (MUST_PASS_IN_STACK): Remove.
+ * config/rs6000/rs6000.c (rs6000_must_pass_in_stack): New.
+ (TARGET_MUST_PASS_IN_STACK): New.
+ * config/sh/sh.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/sh/sh.h (MUST_PASS_IN_STACK): Remove.
+ * config/sparc/sparc.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/sparc/sparc.h (MUST_PASS_IN_STACK): Remove.
+ * config/xtensa/xtensa.c (TARGET_MUST_PASS_IN_STACK): New.
+ * config/xtensa/xtensa.h (MUST_PASS_IN_STACK): Remove.
+ * doc/tm.texi (TARGET_MUST_PASS_IN_STACK): Update from
+ MUST_PASS_IN_STACK.
+
+ * calls.c, function.c, config/alpha/alpha.c, config/alpha/alpha.h,
+ config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.c,
+ config/cris/cris.h, config/fr30/fr30.c, config/fr30/fr30.h,
+ config/frv/frv.c, config/i386/i386.c, config/iq2000/iq2000.c,
+ config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c,
+ config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c,
+ config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
+ config/xtensa/xtensa.c: Use target hook.
+
+2004-07-13 Anthony Heading <aheading@jpmorgan.com>
+
+ * configure.ac (gcc_cv_as_offsetable_lo10: Fix a typo.
+ * configure: Rebuilt.
+
+2004-07-13 Richard Sandiford <rsandifo@redhat.com>
+
+ * doc/invoke.texi: Remove documentation for MIPS -mrnames option.
+ * config/mips/mips.h (mips_reg_names): Don't declare.
+ (MASK_NAME_REGS): Delete. Shuffle other MASK_* values down.
+ (TARGET_NAME_REGS): Delete.
+ (TARGET_SWITCHES): Remove -mrnames.
+ (REGISTER_NAMES): Initialise with the old contents of mips_reg_names[].
+ (ADDITIONAL_REGISTER_NAMES): Remove entries for names mentioned
+ in REGISTER_NAMES.
+ * config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Delete.
+ (override_options): Remove handling of TARGET_NAME_REGS.
+
+2004-07-13 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.h (TARGET_*): Boolify.
+
+2004-07-12 Nick Clifton <nickc@redhat.com>
+
+ * config.gcc: Add sh-*-symbianelf target.
+ * config/sh/sh.c: Add new target macros:
+ TARGET_ENCODE_SECTION_INFO, TARGET_STRIP_NAME_ENCODING,
+ TARGET_CXX_IMPORT_EXPORT_CLASS.
+ (sh_file_start): Create a definition of the .directive section.
+ (sh_attribute): Add dllimport and dllexport attributes.
+ * config/sh/symbian-pre.h: New file.
+ * config/sh/symbian-post.h: New file.
+ * config/sh/symbian.c: New file. Contains Symbian specific
+ functions.
+ * config/sh/sh-protos.h: Add prototypes for new functions
+ provided by symbian.c.
+ * config/sh/t-symbian: New file.
+ * doc/extend.texi: Document support for dllimport and dllexport
+ attributes by the sh-symbianelf target.
+
+2004-07-12 James E Wilson <wilson@specifixinc.com>
+
+ * Makefile.in (AR): Use @AR@ not ar.
+ (NM): New.
+ (AR_FOR_TARGET): Use $(AR) not ar for native.
+ (NM_FOR_TARGET): Use $(NM) not nm for native.
+ * configure.ac: Add AC_CHECK_PROG calls for NM and AR.
+ * configure: Regenerate.
+
+2004-07-12 David S. Miller <davem@nuts.davemloft.net>
+
+ * config/sparc/sparc.md (ashlsi3): Eliminate const 1
+ special case.
+ (ashldi3_sp64): Likewise.
+
+2004-07-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/16477
+ * pa.c (function_arg): Update comment.
+ * pa.h (BLOCK_REG_PADDING): Define.
+
+2004-07-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ PR tree-optimization/16461
+ * tree-tailcall.c (independent_of_stmt_p): Handle non-SSA name
+ arguments of phi nodes.
+
+2004-07-12 Devang Patel <dpatel@apple.com>
+
+ * doc/invoke.texi (Darwin Options): Document -gused and -gfull.
+
+2004-07-12 Steve Ellcey <sje@cup.hp.com>
+
+ * function.c (expand_function_start): Ensure r_save is in Pmode.
+ * calls.c (prepare_call_address): Ensure static_chain_value is
+ in Pmode.
+ * builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
+ r_save_area are in Pmode.
+ * config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
+ fnaddr, and static_chain are in Pmode.
+
+2004-07-12 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/16445
+ * config/ia64/ia64.c (bundling): Don't count ignored insns.
+
+2004-07-12 Richard Henderson <rth@redhat.com>
+
+ * target.h (struct gcc_target): Move gimplify_va_arg_expr
+ next to build_builtin_va_list.
+ * target-def.h (TARGET_GIMPLIFY_VA_ARG_EXPR): Update to match.
+ * builtins.c (gimplify_va_arg_expr): Likewise.
+ * gimplify.c (copy_if_shared_r): Likewise.
+
+2004-07-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * passes.c (rest_of_decl_compilation): Don't defer call of
+ assemble_variable if its DECL_RTL is already set.
+
+2004-07-12 Sebastian Pop <pop@cri.ensmp.fr>
+
+ * cfgloop.h (struct loop): Add nb_iterations field.
+ (current_loops): Declare.
+ * tree-chrec.c (chrec_not_analyzed_yet,
+ chrec_dont_know, chrec_known, count_ev_in_wider_type,
+ chrec_contains_symbols_defined_in_loop): Remove the temporary
+ hooks.
+ * tree-flow-inline.h (loop_containing_stmt): New function.
+ * tree-scalar-evolution.c: Add implementation.
+ * tree-scalar-evolution.h: Add declarations.
+
+2004-07-12 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/15921
+ * Makefile.in (global.o): Add recog.h.
+
+ * global.c (recog.h): Add the include-clause.
+ (bb_info): New member earlyclobber.
+ (allocate_bb_info, free_bb_info): Initialize/finish the new
+ member.
+ (earlyclobber_regclass, earlyclobber_regclass_length): The new
+ global variables.
+ (check_earlyclobber, regclass_intersect,
+ mark_reg_use_for_earlyclobber, mark_reg_use_for_earlyclobber_1):
+ New functions.
+ (calculate_local_reg_bb_info): Calculate value of earlyclobber.
+ (make_accurate_live_analysis): Modify pavin.
+
+2004-07-12 Diego Novillo <dnovillo@redhat.com>
+
+ * tree-cfg.c (find_taken_edge): Statically compute the truth
+ value of a predicate comparing an SSA_NAME to itself.
+
+2004-07-12 Roger Sayle <roger@eyesopen.com>
+
+ * config/rs6000/rs6000.c (rs6000_rtx_costs): Indicate that the
+ rs6000 doesn't have shift-and-add or shift-and-sub instructions
+ by returning the cost of a multiplication plus an addition.
+
+2004-07-12 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/14107
+ * gimplify.c (gimplify_return_expr): Accept a
+ RETURN_EXPR with an error argument.
+ * tree-optimize.c (init_tree_optimization_passes):
+ Run pass_warn_function_return at -O0.
+
+2004-07-12 Roger Sayle <roger@eyesopen.com>
+
+ * doc/invoke.texi: Correct -fasynchronous-unwind-tables option
+ index entry.
+
+2004-07-12 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (mips_use_dfa_pipeline_interface): Delete.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/mips/3000.md: Add copyright notice. Remove automota and
+ function units; use generic ones instead. Only define reservations
+ for things that are different from generic.md. Extend each clause
+ to include r3900.
+ * config/mips/{4000,4100,4300,4600,5000,6000,generic}.md: New files.
+ * config/mips/mips.md: Include them. Remove define_function_units.
+ (alu, imuldiv): New automata and units.
+
+2004-07-12 Ben Elliston <bje@au.ibm.com>
+
+ * doc/invoke.texi (Optimize Options): Document -frename-registers
+ not being enabled by default at -O3.
+
+2004-07-11 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold) <PLUS_EXPR>: Canonicalize X + -C as X - C for
+ floating point additions, to keep real immediate constant positive.
+ <MINUS_EXPR>: For floating point subtractions, only transform X - -C
+ into X + C, and leave positive real constants as X - C.
+
+2004-07-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.c (hppa_gimplify_va_arg_expr): Remove comment.
+
+2004-07-11 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ PR tree-optimization/15654
+ * tree-tailcall.c (eliminate_tail_call): Remove unreachable code.
+
+2004-07-11 Roger Sayle <roger@eyesopen.com>
+
+ * builtins.c (fold_builtin_fputs): Don't bother converting the
+ return type to integer_type_node, as we've already checked that
+ the result will be ignored.
+
+ * tree-eh.c (tree_could_trap_p): Add support for -ftrapv such
+ that signed addition, subtraction, multiplication, division,
+ remainder, negation and absolute value may potentially trap.
+
+ * fold-const.c (fold_ignored_result): New function to strip
+ non-side-effecting tree nodes from an expression whose result
+ is ignored.
+ (fold_convert): Call fold_ignored_result when casting a value
+ to VOID_TYPE.
+ (omit_one_operand): Call fold_ignored_result on the "omitted"
+ operand when building a COMPOUND_EXPR.
+ (pedantic_omit_one_operand): Likewise.
+ * tree.h (fold_ignored_result): Prototype here.
+ * tree-ssa-ccp.c (ccp_fold_builtin): Call fold_ignored_result
+ when we're going to ignore the result.
+
+2004-07-11 Richard Henderson <rth@redhat.com>
+
+ PR tree-opt/16383
+ * tree-ssa-ccp.c (fold_stmt_r): Split out...
+ * tree.c (fields_compatible_p, find_compatible_field): ... new.
+ * tree.h (fields_compatible_p, find_compatible_field): Declare.
+ * tree-sra.c (sra_hash_tree): Hash fields by offset.
+ (sra_elt_eq): Use fields_compatible_p.
+ (generate_one_element_ref): Use find_compatible_field.
+
+2004-07-11 Richard Henderson <rth@redhat.com>
+
+ PR tree-opt/16422
+ * tree-sra.c (generate_one_element_init): New.
+ (generate_element_init): Use it.
+ (scalarize_init): Push/pop gimplify context around it.
+ (find_new_referenced_vars_1, find_new_referenced_vars): New.
+ * gimplify.c (gimplify_expr): Allow SSA_NAME.
+
+2004-07-11 Roger Sayle <roger@eyesopen.com>
+
+ * rtlanal.c (insn_rtx_cost): New function, moved and renamed from
+ combine.c's combine_insn_cost.
+ * rtl.h (insn_rtx_cost): Prototype here.
+ * combine.c (combine_insn_cost): Delete function.
+ (combine_validate_cost): Update callers of combine_insn_cost to
+ call insn_rtx_cost instead.
+ (combine_instructions): Likewise. Use NONJUMP_INSN_P to avoid
+ requesting the rtx_cost of call and/or jump instructions.
+
+ * ifcvt.c (total_bb_rtx_cost): Use insn_rtx_cost instead of calling
+ rtx_cost directly. Don't request/use the cost of call or jump
+ instructions. Return -1 if the cost of any instruction can't be
+ determined (or the BB contains a function call).
+ (find_if_case_1): Abort transformation if total_bb_rtx_cost returns
+ -1 (i.e. can't determine the cost of any instruction or the basic
+ block contains a subroutine call).
+ (find_if_case_2): Likewise.
+
+2004-07-11 Roger Sayle <roger@eyesopen.com>
+
+ * rs6000.c (struct processor_costs): Change semantics of fields to
+ include the COST_N_INSNS scaling, and update all initializers.
+ (rs6000_rtx_costs): Don't use COSTS_N_INSNS on rs6000_cost fields.
+ Use COSTS_N_INSNS(1) for NOT, SIGN_EXTEND, ZERO_EXTEND and COMPARE.
+ Use rs6000_cost->fp for both FLOAT_TRUNCATE and UNSPEC_FRSP. When
+ optimizing for size, use COSTS_N_INSNS(1) for CALL and IF_THEN_ELSE.
+
+2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * LANGUAGES: Remove obsolete information.
+
+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): For SIGSEGV and
+ SIGBUS signal frames, the PSW address points *to* the faulting
+ instruction, not after it.
+
+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (legitimize_tls_address): Handle constant offsets
+ added to TLS symbol addresses.
+
+2004-07-11 Richard Henderson <rth@redhat.com>
+
+ * expmed.c (init_expmed): Use stack-local structures for
+ temporary rtl. Don't recognize shifts.
+
+2004-07-11 Richard Henderson <rth@redhat.com>
+
+ * expr.c (store_expr): Don't fiddle subreg promotion for types
+ with precision smaller than the mode.
+
+2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * tree.h (all_types_permanent): Remove.
+
+2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * langhooks.h (estimate_num_insns, pushlevel, poplevel, set_block,
+ maybe_build_cleanup, update_decl_after_saving): Remove hooks.
+ * langhooks.c (lhd_clear_binding_stack): Remove.
+ * langhooks-def.h (lhd_clear_binding_stack,
+ LANG_HOOKS_MAYBE_BUILD_CLEANUP,
+ LANG_HOOKS_UPDATE_DECL_AFTER_SAVING,
+ LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS, LANG_HOOKS_PUSHLEVEL,
+ LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
+ (LANG_HOOKS_CLEAR_BINDING_STACK): Define to lhd_do_nothing.
+ * system.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
+ LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_SET_BLOCK,
+ LANG_HOOKS_MAYBE_BUILD_CLEANUP,
+ LANG_HOOKS_UPDATE_DECL_AFTER_SAVING, LANG_HOOKS_POPLEVEL): Poison.
+ * tree.h (poplevel): Don't declare.
+ * c-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_PUSHLEVEL,
+ LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
+ * objc/objc-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK,
+ LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK):
+ Remove.
+
+2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ PR tree-optimization/16437
+ * c-common.c (shorten_compare): Don't mark result of conversion to
+ narrower signed type as overflowing.
+ * fold-const.c (decode_field_reference): Determine whether
+ signedness comes from outer type using precision rather than size.
+
+2004-07-11 Phil Edwards <phil@codesourcery.com>
+
+ * configure.ac: Alphabetize --enable-checking list, add
+ missing valgrind entry.
+ * configure: Regenerate.
+
+2004-07-11 Phil Edwards <phil@codesourcery.com>
+
+ * doc/install.texi (Testing): Fix syntax in "make check" example.
+
+2004-07-10 James E Wilson <wilson@specifixinc.com>
+
+ * config/gofast.h (gofast_maybe_init_libfuncs): Use SImode for litodp.
+
+2004-07-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ PR rtl-optimization/16001
+ * loop-iv.c (iv_number_of_iterations): Prevent copy propagation in
+ niter_expr.
+
+2004-07-10 Geoffrey Keating <geoffk@apple.com>
+
+ * config/darwin.h (LINK_COMMAND_SPEC): Don't call c++filt.
+
+2004-07-10 Steve Kargl <sgk@troutmask.apl.washington.edu>
+ James Morrison <phython@gcc.gnu.org>
+
+ * doc/contrib.texi (Contributors): Add gfortran contributors and
+ fix a couple of typos.
+
+2004-07-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ PR rtl-optimization/15387
+ * calls.c (check_sibcall_argument_overlap_1): Handle pointers
+ to incoming args space correctly.
+
+2004-07-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.c (output_indirect_call): Only use %r2 as the link register in
+ indirect calls with the long PA 2.0 pc-relative branch.
+
+2004-07-10 Daniel Jacobowitz <dan@debian.org>
+
+ * config/i386/i386.c (override_options): Pick a 64-bit CPU
+ for the default tuning if TARGET_64BIT.
+
+2004-07-10 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (std_gimplify_va_arg_expr): Widen align/boundary
+ to HOST_WIDE_INT. Fold pad-args-down arithmetic.
+
+2004-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * expr.h (store_bit_field, extract_bit_field): Remove last argument.
+ * expmed.c (store_bit_field, extract_bit_field): Remove last
+ argument.
+ * builtins.c (expand_builtin_signbit): Adjust callers.
+ * optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
+ * calls.c (store_unaligned_arguments_into_pseudos): Likewise.
+ * ifcvt.c (noce_emit_move_insn): Likewise.
+ * stmt.c (expand_return): Likewise.
+ * expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
+ store_field, expand_expr_real_1): Likewise.
+
+2004-07-10 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (std_gimplify_va_arg_expr): Fix borked BIT_AND_EXPR.
+
+2004-07-09 Mike Stump <mrs@apple.com>
+
+ * config/darwin.c (no_dead_strip): Add.
+ (HAVE_DEAD_STRIP): Add.
+ (darwin_emit_unwind_label): Ensure that we don't dead code strip
+ the .eh label.
+
+2004-07-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * tree-ssa-loop-im.c: New file.
+ * Makefile.in (tree-ssa-loop-im.o): Add.
+ * cfgloop.c (superloop_at_depth): New function.
+ * cfgloop.h (superloop_at_depth): Declare.
+ * common.opt (ftree-lim): New flag.
+ * expr.c (array_ref_up_bound): New function.
+ * params.def (PARAM_LIM_EXPENSIVE): New parameter.
+ * timevar.def (TV_LIM): New timevar.
+ * tree-dfa.c (compute_immediate_uses): Respect TDFA_USE flags when
+ computing immediate uses of a phi node.
+ * tree-flow.h (struct tree_ann_common_d): Add aux field.
+ (loop_commit_inserts, for_each_index, tree_ssa_lim): Declare.
+ * tree-optimize.c (init_tree_optimization_passes): Add pass_lim.
+ * tree-pass.h (pass_lim): Declare.
+ * tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im): New
+ functions.
+ (pass_lim): New pass structure.
+ * tree-eh.c (tree_could_trap_p): Handle ARRAY_REFs correctly.
+ * tree.c (in_array_bounds_p): New function.
+ * tree.h (TREE_THIS_NOTRAP): Define also for ARRAY_REFs.
+ (in_array_bounds_p, array_ref_up_bound): Declare.
+ * doc/invoke.texi (-ftree-lim, --param lim-expensive): Document.
+ * doc/passes.texi (tree-ssa-loop-im.c): Document.
+
2004-07-09 Richard Henderson <rth@redhat.com>
* builtins.c (expand_builtin_stpcpy): Don't modify len.
+ * tree-ssa-ccp.c (ccp_fold_builtin): Strip conversion exprs
+ with prejudice.
+
2004-07-10 Kelley Cook <kcook@gcc.gnu.org>
* flags.h: Delete redundant prototypes that are being generated