+2007-09-12 Bernd Schmidt <bernd.schmidt@analog.com>
+
+ * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
+ REG_CLASS_NAMES): Add P0REGS.
+ (REGNO_REG_CLASS): Return it where appropriate.
+ (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
+ (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
+ * doc/md.texi (Blackfin family): Document 'q' constraints.
+
+2007-09-11 Steve Kenton <skenton@ou.edu>
+
+ * pa/linux-unwind.h: Guard with inhibit_libc.
+ * pa/hpux-unwind.h: Likewise.
+
+2007-09-11 David Daney <ddaney@avtrex.com>
+
+ * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
+ * doc/install.texi: Document new --with-llsc and --without-llsc
+ options.
+ * config.gcc: Handle --with-llsc and --without-llsc configure options.
+ * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
+ in %| and %- operand codes. Depend on GENERATE_SYNC instead of
+ ISA_HAS_SYNC.
+ (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
+ sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
+ sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
+ sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
+ sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
+ GENERATE_LL_SC instead of ISA_HAS_LL_SC.
+ * config/mips/mips.opt (mllsc): New option.
+ * config/mips/mips.c (mips_llsc): Define variable.
+ (mips_handle_option): Handle mllsc option.
+ (override_options): Set mips_print_operand_punct for '|' and '-'.
+ (print_operand): Add new %| and %- operand codes.
+ * config/mips/mips.h (mips_llsc_setting): New enum type.
+ (mips_llsc): Declare.
+ (OPTION_DEFAULT_SPECS): Add llsc handling.
+ (GENERATE_SYNC): New macro.
+ (GENERATE_LL_SC): New macro.
+ (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
+ MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
+ MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
+ in %| and %- operand codes.
+
+2007-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
+ TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
+
+2007-09-11 Jason Merrill <jason@redhat.com>
+
+ PR middle-end/27945
+ * stor-layout.c (layout_decl): Do pack variable size fields.
+
+2007-09-11 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * config/m68k/predicates.md (movsi_const0_operand,
+ non_symbolic_call_operand): New predicates.
+
+ * config/m68k/constraints.md: (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
+ New constraints.
+ * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
+ Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
+ CW, CZ, CS, Ap and Ac.
+
+ * config/m68k/m68k.md (UNSPEC_IB): New constant.
+ (constraints.md): New include.
+ (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
+ opx_mem, opy_mem, op_mem, guess, split): New attributes.
+ (movdf_internal): Name pattern. Fix to use alternatives. Add split.
+ Specify attributes.
+ (pushdi): Add split.
+ (tstsi_internal): Name pattern. Fix to use alternatives. Specify
+ attributes. Split tstsi_internal_68020_cf from it.
+ (tstsi_internal_68020_cf): New pattern.
+ (tsthi_internal, tstqi_internal): Name pattern. Specify attributes.
+ (tst<mode>_cf): Specify attributea.
+ (cmpsi_cf): Name pattern. Specify attributes.
+ (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
+ (pushexthisi_const): Fix to use alternatives. Specify
+ attributes.
+ (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
+ from it. Fix to use alternatives. Specify attributes.
+ (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
+ (movsi_cf, movstrictqi_cf): Fix to use alternatives. Specify
+ attributes.
+ (movsf_cf_soft): Specify attributes.
+ (movdf_cf_soft): Add split.
+ (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
+ cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
+ 68k_extendqisi2, truncdfsf2_cf): Specify attributes.
+ (truncdfsf2_68881): Name pattern. Specify attributes.
+ (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
+ floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
+ fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
+ Specify attributes.
+ (addsi3_5200): Fix to use alternatives. Specify attributes.
+ Add splits.
+ (add<mode>3_cf, subdi_dishl32): Specify attributes.
+ (subsi3): Add alternative for subq.l. Specify attributes.
+ (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
+ (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern. Specify
+ attributes.
+ (umulhisi3): Specify attributes.
+ (mulhisisi3_z): Name pattern. Specify attributes.
+ (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
+ sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
+ subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
+ bsetmemqi): Specify attributes.
+ (bsetmemqi_ext): Name pattern. Specify attributes.
+ (bclrmemqi): Specify attributes.
+ (bclrmemqi_ext, scc, sls): Name pattern. Specify attributes.
+ (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
+ attributes.
+ (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
+ pattern. Specify attributes.
+ (jump): Specify attributes.
+ (tablejump_internal): Name pattern. Specify attributes.
+ (call_value): Split into non_symbolic_call_value,
+ symbolic_call_value_jsr, symbolic_call_value_bsr. Fix to use
+ alternatives. Specify attributes.
+ (non_symbolic_call_value, symbolic_call_value_jsr,
+ symbolic_call_value_bsr): New patterns.
+ (nop, return, unlink, indirect_jump): Specify attributes.
+ (trap): Fix condition. Specify attributes.
+ (ib): New pattern.
+
+ * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
+ (override_options): Initialize it. Initialize m68k_sched_cpu.
+ (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
+ (const_method): Make global, rename to m68k_const_method.
+ (const_int_cost, output_move_const_into_data_reg): Update.
+ (output_move_double): Parametrize to emit rtl code, rename to
+ handle_move_double.
+ (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
+ emit_movsi): New static functions.
+ (output_move_double): New function with semantics of old
+ output_move_double.
+ (m68k_emit_move_double): New function.
+ (m68k_sched_cpu): New variable.
+ (attr_op_type): New enum.
+ (sched_guess_p): New variable.
+ (sched_address_type, sched_operand_type, sched_attr_op_type):
+ New static functions.
+ (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
+ m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
+ (sched_branch_type): New static variable.
+ (m68k_sched_branch_type): New function.
+ * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
+ (m68k_symbolic_call_var): Declare.
+ (M68K_CONST_METHOD): Rename from CONST_METHOD. Move here from m68k.c.
+ (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
+ m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
+ m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
+ Declare.
+
+2007-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
+ * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
+ error if __builtin_va_arg_pack_len () wasn't optimized out during
+ inlining.
+ * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
+ with the number of inline's anonymous arguments.
+ * doc/extend.texi: Document __builtin_va_arg_pack_len ().
+
+2007-09-11 Zdenek Dvorak <ook@ucw.cz>
+
+ * fold-const.c (extract_muldiv_1): Do not simplify
+ var * c * c to var.
+
+2007-09-11 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
+ (TARGET_INTER_UNIT_CONVERSIONS): New.
+ * i386.md (floatsi expanders): Remove redundant check for SImode
+ source; offload to memory when asked for.
+ (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
+ floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
+ Update conditions;
+ (floatsisf2_mixed_memory, floatsisf2_sse_memory,
+ floatsidf2_mixed_memory, floatsidf2_sse_memory
+ floatdisf2_mixed_memory, floatsisf2_sse_memory,
+ floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
+
+2007-09-11 Jan Hubicka <jh@suse.cz>
+
+ * toplev.c (process_options): all frontends now do unit-at-a-time.
+ * cgraphunit.c: update comments.
+ (cgraph_expand_function): call passmanager dirrectly; emit thunks.
+ * c-decl.c (finish_function): use cgraph_add_new_function.
+ * function.c (expand_function_end): We are always unit-at-a-time.
+
+2007-09-11 Richard Sandiford <richard@codesourcery.com>
+
+ * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
+ settings for MIPS16.
+ (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
+
+2007-09-11 Richard Sandiford <richard@codesourcery.com>
+
+ * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
+ SYMBOL_FORCE_TO_MEM constants.
+ (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
+ (mips16_rewrite_pool_refs_info): New structure.
+ (mips16_rewrite_pool_constant): New function, split out from...
+ (mips16_rewrite_pool_refs): ...here. Take a pointer to a
+ mips16_rewrite_pool_refs_info structure rather than a pointer
+ to a constant pool. Force force_to_mem_operands into memory.
+ (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
+ * config/mips/predicates.md (force_to_mem_operand): New predicate.
+ * config/mips/constraints.md (kf): New constraint.
+ * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
+ (*movsi_mips16): Likewise.
+
+2007-09-11 Richard Sandiford <richard@codesourcery.com>
+ Nigel Stephens <nigel@mips.com>
+ David Ung <davidu@mips.com>
+
+ * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
+ * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
+ (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
+ (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
+ (mips_zero_extend_cost): New functions.
+ (mips_rtx_costs): Treat COMPARE constants as having zero cost.
+ Use the new functions. Tweak many cost estimates, both here
+ and in the new subroutines. Return false when the cost of the
+ operands has not been calculated. Check for *clear_upper32.
+ Check for floating-point multiply-add, reciprocal and rsqrt
+ patterns. Handle comparison and rotation codes.
+
+2007-09-11 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
+ override default.
+ * config/i386/i386.c (get_dllimport_decl): Don't strip
+ FASTCALL_PREFIX.
+
+2007-09-10 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/30013
+ * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
+ declarations to top.
+ (DFP_TO_BFP): Use for either XFmode or TFmode.
+ (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
+ of BFP_VIA_TYPE.
+ * config/dfp-bit.h: Include float.h.
+ (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
+ double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
+ which doesn't mean the same thing.
+ (BFP_KIND): Use 4 to mean TFmode.
+ (BFP_FMT): Specify the number of decimal digits based on the
+ number of mantissa digits.
+ (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
+ (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
+ (STR_TO_BFP): Use strtold for XFmode or TFmode.
+ (TFtype): Define if TFmode is supported.
+ * doc/libgcc.texi (Decimal float library routines): Document
+ TF conversion functions.
+
+2007-09-10 Chao-ying Fu <fu@mips.com>
+
+ * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
+ (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
+ (mips_emit_compare): Process fixed-point modes.
+ (mips_pad_arg_upward): Support fixed-point types.
+ (override_options): Allow fixed-point modes in accumulators.
+ (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
+ (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
+ V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
+ (mips_scalar_mode_supported_p): New function to accept fixed-point
+ modes if the width is not greater than two BITS_PER_WORD.
+ * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
+ LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
+ SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
+ LONG_LONG_ACCUM_TYPE_SIZE): Define.
+ * config/mips/mips.md ("d"): Update mode attribute for fixed-point
+ modes.
+ ("IMODE"): New mode attribute.
+ (mips-fixed.md): Include.
+ * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
+ ACCUM, UACCUM.
+ * config/mips/mips-fixed.md: New file.
+
+2007-09-11 Ben Elliston <bje@au.ibm.com>
+
+ * config/spu/spu.md: Formatting fixes.
+
2007-09-10 Janis Johnson <janis187@us.ibm.com>
* config/dfp-bit.c (dfp_unary_func): Delete.
vectorizable_assignment): Likewise.
(vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
Declare (make extern).
- * tree-vectorizer.c (new_stmt_vec_info): Initiliaze the new field.
+ * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
(new_loop_vec_info): Likewise.
(destroy_loop_vec_info): Free memory allocated for SLP structures.
* tree-vect-analyze.c: Include recog.h.