OSDN Git Service

* config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 379ba58..cd69a8c 100644 (file)
+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.
+       (dfp_unary_op): Delete.
+       (dfp_binary_op): Use decFloat functions instead of decNumber
+       functions for binary operations.
+       (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
+       (dnn_binary_op): Call dfp_binary_op with decFloat rather than
+       DFP_C_TYPE.
+       (dfp_compare_op): Use decFloat functions insteadof decNumber
+       functions for comparisons.
+       (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
+       (dnn_binary_op): Call dfp_compare_op with decFloat rather than
+       DFP_C_TYPE.
+       (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
+       call to dxx_binary_op and decFloat function.
+       (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
+       calls to dxx_binary_op and decFloat function.
+       * config/dfp-bit.h: Include decFloat header files.
+       (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
+       DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
+       DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
+       DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
+
+2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
+            Jan Sjodin <jan.sjodin@amd.com>
+       
+       * tree-vect-analyze.c (vect_analyze_operations): Change
+       comparison of loop iterations with threshold to less than
+       or equal to instead of less than. Reduce
+       min_scalar_loop_bound by one.
+       * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
+       Change prologue and epilogue iterations estimate to vf/2,
+       when unknown at compile-time. Change versioning guard
+       cost to taken_branch_cost. If peeling for alignment is
+       unknown at compile-time, change peel guard costs to one
+       taken branch and one not-taken branch per peeled loop.
+       If peeling for alignment is known but number of scalar loop
+       iterations is unknown at compile-time, change peel guard
+       costs to one taken branch per peeled loop. Change the cost
+       model equation to consider vector iterations as the loop
+       iterations less the prologue and epilogue iterations.
+       Change outside vector cost check to less than or equal to
+       zero instead of equal to zero.
+       (vect_do_peeling_for_loop_bound): Reduce
+       min_scalar_loop_bound by one.
+       * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
+       TARG_COND_NOT_TAKEN_BRANCH_COST.        
+       * config/i386/i386.h (processor_costs): Add
+       scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
+       vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
+       vec_align_load_cost, vect_unalign_load_cost,
+       vec_store_cost, cond_taken_branch_cost,
+       cond_not_taken_branch_cost.
+       Define macros for x86 costs.
+       * config/i386/i386.c:
+       (size_cost): Set scalar_stmt_cost, scalar_load_cost,
+       scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
+       scalar_to_vec_cost, vec_align_load_cost, 
+       vect_unalign_load_cost, vec_store_cost,
+       cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
+       (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
+       geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
+       core2_cost, generic64_cost, generic32_cost): Set to default
+       untuned costs.
+       (k8_cost, amdfam10_cost): Costs for vectorization tuned.
+       (x86_builtin_vectorization_cost): New.
+
+2007-09-10  Janis Johnson  <janis187@us.ibm.com>
+           Ben Elliston  <bje@au.ibm.com>
+
+       * dfp.c: Include decimal128Local.h; 
+       (dfp_byte_swap): Remove.
+       (encode_decimal32, decode_decimal32): Don't handle endianness.
+       (encode_decimal64, decode_decimal64): Ditto.
+       (encode_decimal128, decode_decimal128): Ditto.
+       * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
+       (__swap64): Remove.
+       (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
+         (__swap128): Remove
+       (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
+       * Makefile.in (DECNUM_H): Add decimal128Local.h.
+
+2007-09-10  David Daney  <ddaney@avtrex.com>
+
+       * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
+       define_constants.
+       (memory_barrier): Rewrote as an insn that clobbers memory.
+
+2007-09-10  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.c (mips_global_pointer): Check
+       call_really_used_regs instead of call_used_regs.
+       (mips_save_reg_p): Likewise.  Save all call-saved registers
+       if current_function_saves_all_registers.  Fix indentation.
+       No longer treat $18 as a special case.
+       (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
+
+2007-09-10  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
+       * config/mips/mips.c (mips_cpu_info_table): Mention it in the
+       the introductory comment.
+       (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
+       (override_options): Don't test for it.
+       * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
+       (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
+       * config/mips/vr.h: As for config/mips/sde.h.
+
+2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+           Revital Eres  <eres@il.ibm.com>
+
+       * target.h (struct gcc_target.sched): New field: sms_res_mii.
+       (struct ddg): Define.
+       * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
+       (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
+       * config/spu/spu.c: Include ddg.h.
+       (TARGET_SCHED_SMS_RES_MII): Define.
+       (spu_sms_res_mii): New function to calculate mii.
+       * modulo-sched (res_MII): Use it.
+       * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
+
+2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+       * config/s390/s390.c (s390_dump_pool): Create copy of constant
+       pool entries since they might hold values that must not be shared.
+
+2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/33369
+       * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
+       Use 'N' operand constraint for op2.
+       (lshr<mode>3): Ditto.
+       (ashl<mode>3): Ditto.
+       (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
+       (vec_shr_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
+
+       * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
+       IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
+
+2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+       * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
+       Change mode macro in the last real_2expN parameter to uppercase.
+
+2007-09-10  Michael Matz  <matz@suse.de>
+
+       * tree-pass.h (pass_cselim): Declare new pass.
+       * passes.c (init_optimization_passes): Link in pass_cselim.
+       * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
+       tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
+       cond_store_replacement.
+       (condstoretemp): New static variable.
+       (cond_store_replacement): New function.
+       (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
+       tree_ssa_phiopt_worker.
+       (struct name_to_bb): New.
+       (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
+       nt_init_block, nt_fini_block): New static functions.
+       (seen_ssa_names, nontrap_set): New static variables.
+       (gate_cselim, pass_cselim): Define new pass.
+       * common.opt (ftree-cselim): New flag.
+       * toplev.c (process_options): Set flag_tree_cselim if required.
+
+2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
+
+       * simplify-rtx.c (simplify_relational_operation_1): For recent
+       canonicalization, don't recurse if op1 equals both PLUS arguments.
+
+2007-09-09  David Daney  <ddaney@avtrex.com>
+
+       * optabs.c (expand_sync_operation):  Use plus insn if minus
+       CONST_INT_P(val).
+       (expand_sync_fetch_operation):  Ditto.
+
+2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
+       of cvtpq2ps.
+       (*floatsisf2_sse_vector): Likewise.
+
+2007-09-09  Krister Walfridsson  <cato@df.lth.se>
+
+       * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
+
+2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.h (ix86_tune_indices): Rename
+       X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
+       (TARGET_USE_VECTOR_CONVERTS): Updated.
+       * config/i386/i386.c: Likewise.
+
+2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
+           Nigel Stephens <nigel@mips.com>
+
+       * doc/invoke.texi (Overall Options):  Add .sx file extension
+       as a synonym for .S.
+       * cppspec.c (known_suffixes): Likewise.
+       * gcc.c (default_compilers): Likewise.
+
+2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
+
+       PR target/30315
+       * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
+       * simplify-rtx.c (simplify_relational_operation_1): Add the
+       canonicalization from i386.h.
+       * doc/md.texi (Canonicalization of Instructions): Document it.
+
+2007-09-09  Jan Hubicka  <jh@suse.cz>
+           Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
+
+       * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
+       (TARGET_USE_VECTOR_CONVERTS): New.
+       * i386.md: New post-reload splitters for converting SF to DF and DF to
+       SF.
+       (floatsi* expander): Special case vector conversions.
+       (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
+       floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
+       floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
+       (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
+       Disable when doing vector converts.
+       (floatsi<mode>2_i387): Disable when
+       * sse.md (vec_dupv2df): Export.
+       * i386.c (ix86_tune_features): Enable SSE conversions.
+
+2007-09-09  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-operands.c (add_virtual_operand): Only mark
+       stores as has_volatile_ops if alias information is not available.
+
+2007-09-09  Revital Eres  <eres@il.ibm.com>
+
+       * doc/contrib.texi: Add myself.
+
+2007-09-09  Ira Rosen  <irar@il.ibm.com>
+
+       * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
+       stmt_vinfo_set_outside_of_loop_cost): New functions.
+       * tree-vect-transform.c (vect_get_cost_fields): Remove.
+       (vect_model_simple_cost): Call
+       stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
+       field instead of calling vect_get_cost_fields.
+       (vect_model_store_cost, vect_model_load_cost): Likewise.
+
+2007-09-09  Revital Eres  <eres@il.ibm.com>
+
+       * config/rs6000/rs6000.c (paired_init_builtins): Add const
+       declaration to bdesc_paired_preds variable.
+       (paired_expand_builtin): Likewise.
+
+2007-09-09  Revital Eres  <eres@il.ibm.com>
+
+       * dbgcnt.def (sms_sched_loop): New counter.
+       * modulo-sched.c: Use sms_sched_loop instead of
+       MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
+       perform swing modulo scheduling on.  Include dbgcnt.h.
+       * Makefile.in: Add DBGCNT_H to modulo-sched.o.
+       * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
+
+2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
+       Substitute all uses with ...
+       (MODEF): New mode iterator.
+
+       (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
+       from pre-regalloc define_insn_and_split splitter pattern.
+       (*fix_trunc<mode>_i387_1): Ditto.
+       (*fistdi2_1): Ditto.
+       (*fist<mode>2_1): Ditto.
+       (frndintxf2_floor): Ditto.
+       (*fist<mode>2_floor_1): Ditto.
+       (frndintxf2_ceil): Ditto.
+       (*fist<mode>2_ceil_1): Ditto.
+       (frndintxf2_trunc): Ditto.
+       (frndintxf2_mask_pm): Ditto.
+
+       (prologue): Use (const_int 0) as never generated filler insn.
+       (epilogue): Ditto.
+       (sibcall_epilogue): Ditto.
+       (eh_return_si): Ditto.
+       (eh_return_di): Ditto.
+
+       (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
+       using MODEF mode iterator.
+       (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
+       using MODEF mode iterator.
+       (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
+       using MODEF mode iterator.
+       (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
+       Macroize expander using MODEF mode iterator.
+
+       (zero_extendsidi2): Remove operand constraints from expander.
+       (smuldi3_highpart): Ditto.
+       (indirect_jump): Ditto.
+       (tablejump): Ditto.
+       (rsqrtsf2): Ditto.
+       * config/i386/sse.md (storentv4sf): Ditto.
+       (storentv2df): Ditto.
+       (storentv2di): Ditto.
+       (storentsi): Ditto.
+       (sse2_cvtpd2ps): Ditto.
+       (vec_interleave_highv16qi): Ditto.
+       (vec_interleave_lowv16qi): Ditto.
+       (vec_interleave_highv8hi): Ditto.
+       (vec_interleave_lowv8hi): Ditto.
+       (vec_interleave_highv4si): Ditto.
+       (vec_interleave_lowv4si): Ditto.
+       (vec_interleave_highv2di): Ditto.
+       (vec_interleave_lowv2di): Ditto.
+       (sse2_maskmovdqu): Ditto.
+       * config/i386/mmx.md (mmx_maskmovq): Ditto.
+
+2007-09-09  Ira Rosen  <irar@il.ibm.com>
+
+       * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
+       (struct _slp_tree, struct _slp_instance): Define new data structures
+       along macros for their access.
+       (struct _loop_vec_info): Define new fields: strided_stores,
+       slp_instances, and slp_unrolling_factor along macros for their access.
+       (enum slp_vect_type): New.
+       (struct _stmt_vec_info): Define new field, slp_type, and macros for its
+       access.
+       (STMT_VINFO_STRIDED_ACCESS): New macro.
+       (vect_free_slp_tree): Declare.
+       (vectorizable_load): Add an argument of type slp_tree.
+       (vectorizable_store, vectorizable_operation, vectorizable_conversion,
+       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): 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.
+       (vect_update_slp_costs_according_to_vf): New.
+       (vect_analyze_operations): Add argument for calls to vectorizable_ ()
+       functions. For not pure SLP stmts with strided access check that the
+       group size is power of 2. Update the vectorization factor according to
+       SLP. Call vect_update_slp_costs_according_to_vf.
+       (vect_analyze_group_access): New.
+       (vect_analyze_data_ref_access): Call vect_analyze_group_access.
+       (vect_free_slp_tree): New functions.
+       (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
+       vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
+       vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
+       vect_detect_hybrid_slp): Likewise.
+       (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
+       and vect_detect_hybrid_slp.
+       * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
+       SLP costs into account.
+       (vect_get_cost_fields): New function.
+       (vect_model_simple_cost): Make extern, add SLP parameter and handle
+       SLP.
+       (vect_model_store_cost, vect_model_load_cost): Likewise.
+       (vect_get_constant_vectors): New function.
+       (vect_get_slp_vect_defs, vect_get_slp_defs,
+       vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
+       vect_get_vec_defs): Likewise.
+       (vectorizable_reduction): Don't handle SLP for now.
+       (vectorizable_call): Don't handle SLP for now. Add argument to
+       vect_model_simple_cost.
+       (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
+       get SLPed and vectorized defs). Fix indentation and spacing.
+       (vectorizable_assignment): Handle SLP.
+       (vectorizable_induction): Don't handle SLP for now.
+       (vectorizable_operation): Likewise.
+       (vectorizable_type_demotion): Add argument to
+       vect_model_simple_cost.
+       (vectorizable_type_promotion): Likewise.
+       (vectorizable_store, vectorizable_load): Handle SLP.
+       (vectorizable_condition): Don't handle SLP for now.
+       (vect_transform_stmt): Add a new argument for SLP. Check that there is
+       no SLP transformation required for unsupported cases. Add SLP
+       argument for supported cases.
+       (vect_remove_stores): New function.
+       (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
+       (vect_transform_loop): Schedule SLP instances.
+       * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
+
+2007-09-09  Andrew Haley  <aph@redhat.com>
+
+        * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the
+        fake signed optab.
+
+2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
+
+       Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
+       * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
+       Similar for what label_refs can go in the JUMP_TARGET field.  Split
+       REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
+       * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
+       REG_LABEL when replacing an operand with a LABEL_REF for a
+       non-jump insn.
+       (subst_reloads): When replacing a LABEL_REG with a register,
+       instead of generating a REG_LABEL note, assert that there already
+       is one or that the label is a known target for the insn.
+       * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
+       note, check the JUMP_LABEL field.  Remove "else" after return.
+       * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
+       cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
+       (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
+       REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
+       insns.  Iterate over all notes; don't assume there's only one.
+       * cse.c (recorded_label_ref): Adjust comment to refer to
+       REG_LABEL_OPERAND.
+       (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
+       insns, not just NONJUMP_INSN_P.
+       (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
+       isn't a jump target.
+       * jump.c (rebuild_jump_labels): Adjust head comment.
+       (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
+       don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
+       (mark_all_labels): For JUMP_P insns without a target, check if the
+       the target is noted on the previous nonjump insn.
+       (mark_jump_label_1): New function, guts from mark_jump_label.
+       <case IF_THEN_ELSE>: Handle first operand as a non-target when
+       marking jump target labels.
+       <case LABEL_REF>: Adjust for whether to generate a
+       REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
+       For 'E' format rtl, iterate in descending element order.
+       (delete_related_insns): Handle both REG_LABEL_TARGET and
+       REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
+       reference count, delete and fallthrough.  Move finding-next-
+       non-deleted insn last in the function.  Look at all INSN_P insns
+       for REG_LABEL_OPERAND notes.
+       (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
+       JUMP.
+       * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
+       JUMP_LABEL, output the INSN_UID of it.
+       * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
+       and/or REG_LABEL_TARGET.
+       (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
+       with jump.c copy by only adding notes for labels actually
+       referenced in the insn.
+       * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
+       usage count increment; handle all INSN_P trial insns.
+       (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
+       notes.
+       * rtl.h (struct rtx_def) <volatil>: Adjust to mention
+       REG_LABEL_TARGET and REG_LABEL_OPERAND.
+       (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
+       REG_LABEL_OPERAND.
+       * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
+       JUMP_P insns and REG_LABEL_OPERAND everywhere.
+       * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
+       on all INSN_P insns.
+       * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
+       * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
+       REG_LABEL_OPERAND notes.
+       * reload1.c (calculate_needs_all_insns): Adjust comments.
+       (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
+       * config/alpha/alpha.md (split for load of an address into a
+       four-insn sequence on Unicos/Mk): Adjust to use
+       REG_LABEL_OPERAND.
+       * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
+
+2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+
+       Revert:
+       2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+       * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
+       FOR_BB_INSNS_SAFE instead of for loop.
+       * cse.c (cse_extended_basic_block): Likewise.
+       * postreload.c (reload_cse_regs_1): New variable next. Make sure
+       that the for loop does not invoke NEXT_INSN on a deleted insn.
+       * function.c (instantiate_virtual_regs): Likewise.
+       * lower-subreg.c (remove_retval_note): Likewise.
+       (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
+       FOR_BB_INSNS.
+       * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
+       a deleted insn.
+       * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
+       insn, if it's a jump.
+       (try_redirect_by_replacing_jump): New variable jump_p. Call
+       tablejump_p before delete_insn_chain.
+       * reload1.c (reload): New variable next. Make sure that the for
+       loop does not invoke NEXT_INSN on a deleted insn.
+       (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
+       (delete_output_reload): New variable prev. Make sure the the for
+       loops do not invoke PREV_INSN on a deleted insn.
+
+2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * pa/constraints.md: Remove 'X' from unused letters comment.
+
+2007-09-08  Richard Guenther  <rguenther@suse.de>
+
+       * tree-tailcall.c (find_tail_calls): If we don't have aliases
+       computed check stmt_ann->references_memory instead of counting
+       virtual operands.
+2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * cse.c (fold_rtx): Use validate_unshare_change() instead of
+       validate_change() in one more case.
+
+2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
+
+       PR tree-optimization/32283
+       * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
+       estimated_loop_iterations.
+       (determine_use_iv_cost_condition): Decrease cost of expressions
+       used in iv elimination.
+
+2007-09-08  Richard Guenther  <rguenther@suse.de>
+
+       * tree-cfg.c (verify_gimple_expr): Avoid building new
+       pointer types, use TYPE_POINTER_TO if available instead.
+
+2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/33329
+       PR rtl-optimization/26449
+       * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
+       (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
+       split1 pass.
+       (mulv16qi3): Implement as define_insn_and_split pattern instead of
+       define_expand.  Split insn in split1 pass.
+       (mulv2di3): Ditto.
+
+2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-optimization/33301
+       * tree-vect-analyze (analyze_operations): Look at the type of the rhs
+       when relevant.
+
+2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
+
+       PR tree-optimization/32183
+       * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
+
+       * tree-ssa-reassoc.c: Include cfgloop.h.
+       (is_reassociable_op): Add a loop argument and return true only
+       for inside loop.
+       (linearize_expr): Updated.
+       (should_break_up_subtract): Likewise.
+       (linearize_expr_tree): Likewise.
+       (init_reassoc): Call loop_optimizer_init with
+       AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
+       with CDI_DOMINATORS.
+       (fini_reassoc): Call loop_optimizer_finalize.
+
+2007-09-07  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
+       if there is no i-cache.
+
+2007-09-07  Richard Guenther  <rguenther@suse.de>
+
+       Reapply
+       2007-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/32586
+       * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
+       folding if nothing changed.
+       (simplify_unary_expression): New function.  Do tree combining
+       on conversion like codes.
+       (try_to_simplify): Call it.
+
+2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/33286
+       * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
+       (__gthread_active,__gthread_start, __gthread_active_init): New.
+       * gthr-posix95.h: Likewise.
+
+2007-09-07  Roman Zippel <zippel@linux-m68k.org>
+
+       * function.h (struct function): Rename calls_unwind_init
+       to saves_all_registers.
+       (current_function_saves_all_registers): Renamed from
+       current_function_calls_unwind_init.
+       * reload1.c (reload): Set current_function_saves_all_registers.
+       * except.c (expand_builtin_unwind_init): Likewise.
+       * config/m68k/m68k.c (m68k_save_reg): Use
+       current_function_saves_all_registers to save pic register.
+
+2007-09-07  Janis Johnson  <janis187@us.ibm.com>
+
+       config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
+       config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
+
+       Reapply reverted changes:
+
+       2007-09-06  Jan Hubicka  <jh@suse.cz>
+       * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call of
+       real_2expN.
+
+       2007-09-06  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
+       (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
+
+       2007-09-05  Janis Johnson  <janis187@us.ibm.com>
+
+       * optabs.c (expand_float): Convert unsigned integer as signed only
+       if it provides sufficient accuracy; add mode argument to real_2expN.
+       (expand_fix): Fix comment typos; extend binary float into mode
+       wider than destination for converion to unsigned integer; add mode
+       argument to real_2expN.
+       * real.c (real_2expN): Add mode argument to special-case decimal
+       float values.
+       * real.h (real_2expN): Ditto.
+       * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
+       real_2expN.
+       (fixed_from_string): Ditto.
+       (fixed_to_decimal): Ditto.
+       (fixed_convert_from_real): Ditto.
+       (real_convert_from_fixed): Ditto.
+       * config/rs6000/rs6000.md (FP): Include DD and TD modes.
+       * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
+       muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
+       floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
+
+2007-09-07  Diego Novillo  <dnovillo@google.com>
+
+       * tree-flow.h (const_block_stmt_iterator): Remove.
+       Update all users to use block_stmt_iterator.
+       * tree-iterator.h (const_tree_stmt_iterator): Remove.
+       Update all users to use tree_stmt_iterator.
+
+2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * config/mips/mips.c (mips_set_current_function): Temporarily
+       make this a no-op to fix bootstrap errors, pending rewrite.
+
+2007-09-07  Jan Hubicka  <jh@suse.cz>
+
+       * reorg.c (dbr_schedule): Move code removing placeholder USEs later
+       in the pass.
+
+2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-optimization/33299
+       * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
+       uses for all relevant loop-exit phis, not just the first.
+
+2007-09-07  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/33330
+       * tree-ssa-operands.c (access_can_touch_variable): An access
+       of the form (*p)[0] can touch a variable of same size.
+
+2007-09-07  Jan Hubicka  <jh@suse.cz>
+
+       * passes.c (init_optimization_passes): Add simple dce and addressable
+       passes.
+       * tree-ssa.c (execute_update_addresses_taken): New function.
+       (pass_update_address_taken): New.
+       * tree-ssa-dse.c (execute_simple_dse): New function.
+       (pass_simple_dse): New.
+       * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
+
+2007-09-07  Tobias Burnus  <burnus@net-b.de>
+
+       PR middle-end/33321
+       * doc/invoke.texi: Fix -Wstrict-overflow= table.
+
+2007-09-07  Richard Guenther  <rguenther@suse.de>
+
+       Revert
+       2007-09-06  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/32586
+       * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
+       folding if nothing changed.
+       (simplify_unary_expression): New function.  Do tree combining
+       on conversion like codes.
+       (try_to_simplify): Call it.
+
+2007-09-07  Richard Guenther  <rguenther@suse.de>
+           Uros Bizjak  <ubizjak@gmail.com>
+
+       PR tree-optimization/32821
+       * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
+       NULL in the call to set_bb_stmt_list.
+
+2007-09-07  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.c (build_mips16_call_stub): Emit all direct
+       float calls here, rather than leaving some to the caller.
+       Use call_internal_direct and call_value_internal_direct.
+       * config/mips/mips.md (call_internal_direct): New pattern.
+       (call_value_internal_direct): Likewise.
+
+2007-09-07  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
+       (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
+       to 0 for MIPS16.
+       (override_options): Set mips_base_move_loop_invariants.
+
+2007-09-07  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.opt (mcode-readable=): Move to keep list
+       alphabetical.
+
+2007-09-07  Richard Sandiford  <richard@codesourcery.com>
+
+       * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
+       and -mgpopt options.  Adjust the -G documentation to match.
+       * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
+       * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
+       function, split out from mips_classify_symbol.  Return false for
+       !TARGET_LOCAL_SDATA.
+       (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
+       Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
+       (override_options): Check whether the -mgpopt setting is consistent
+       with the other flags.
+       (symbolic_expression_p): Delete.
+       (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
+       and default_elf_select_rtx_section.
+       (mips_in_small_data_p): Honor section attributes for MIPS16 too.
+       Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
+       external data and TARGET_EXTERN_SDATA.
+
+2007-09-07  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/33303
+       * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
+
+2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+
+       * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
+       FOR_BB_INSNS_SAFE instead of for loop.
+       * cse.c (cse_extended_basic_block): Likewise.
+       * postreload.c (reload_cse_regs_1): New variable next. Make sure
+       that the for loop does not invoke NEXT_INSN on a deleted insn.
+       * function.c (instantiate_virtual_regs): Likewise.
+       * lower-subreg.c (remove_retval_note): Likewise.
+       (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
+       FOR_BB_INSNS.
+       * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
+       a deleted insn.
+       * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
+       insn, if it's a jump.
+       (try_redirect_by_replacing_jump): New variable jump_p. Call
+       tablejump_p before delete_insn_chain.
+       * reload1.c (reload): New variable next. Make sure that the for
+       loop does not invoke NEXT_INSN on a deleted insn.
+       (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
+       (delete_output_reload): New variable prev. Make sure the the for
+       loops do not invoke PREV_INSN on a deleted insn.
+
+2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
+
+       * cgraphbuild.c (rebuild_cgraph_edges): Export.
+       * cgraph.h (rebuild_cgraph_edges): Declare.
+       * tree-pass.h (pass_expand_omp_ssa): New.
+       * omp-low.c (find_omp_clause): Export.
+       (copy_var_decl): Split from omp_copy_decl_2.
+       (build_omp_barrier): Return the call to emit instead of emitting
+       it directly.
+       (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
+       build_omp_barrier.
+       (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
+       expand_omp_for_generic, expand_omp_for_static_nochunk,
+       expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
+       Adapted to work on SSA form.
+       (execute_expand_omp): Do not invalidate dominance information.
+       (gate_expand_omp): Do not run with -fopenmp-ssa flag.
+       (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
+       * gimplify.c (gimplify_omp_for): Ensure that the control variable is
+       a gimple_reg.
+       (force_gimple_operand): Allow gimplifying code expressions without
+       value.
+       * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
+       * common.opt (fopenmp-ssa): New.
+       * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
+       * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
+       * tree-cfg.c: Include tree-inline.h.
+       (struct move_stmt_d): Replace vars_to_remove by vars_map field.
+       (replace_by_duplicate_decl, replace_ssa_name,
+       mark_virtual_ops_in_region): New functions.
+       (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
+       to work on SSA form.
+       * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
+       * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
+       constructs.
+
+2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
+
+       * tree-loop-linear.c: Include obstack.h.
+       (linear_transform_loops): New obstack lambda_obstack.
+       Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
+       lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
+       and free afterwards.
+       * lambda.h (struct obstack): New forward declaration.
+       (lambda_linear_expression_new): New parameter of type struct
+       obstack *.
+       (lambda_loopnest_new): Likewise.
+       (lambda_loopnest_transform): Likewise.
+       (lambda_body_vector_new): Likewise.
+       (lambda_body_vector_compute_new): Likewise.
+       (gcc_loopnest_to_lambda_loopnest): Likewise.
+       (lambda_loopnest_to_gcc_loopnest): Likewise.
+       * lambda-code.c: Include obstack.h.
+       (lambda_lattice_new): New parameter lambda_obstack.  Use it for
+       allocation of ret.
+       (lambda_body_vector_new): Likewise.
+       (lambda_linear_expression_new): Likewise.
+       (lambda_lattice_new): Likewise.
+       (lambda_loopnest_new): Likewise.  Additionally use obstack to
+       allocate LN_LOOPS(ret).
+       (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
+       it to lambda_lattice_new.
+       (lambda_body_vector_compute_new): New parameter lambda_obstack.
+       Pass it to lambda_body_vector_new.
+       (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
+       it to lambda_lattice_new.
+       (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
+       Pass it to lambda_loopnest_new, lambda_linear_expression_new.
+       (lambda_compute_target_space): Likewise.
+       (lambda_compute_auxillary_space): New parameter lambda_obstack.
+       Pass it to lambda_lattice_compute_base and
+       compute_nest_using_fourieer_motzkin.
+       (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
+       it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
+       and lambda_lattice_compute_target_space.
+       (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
+       Pass it to lambda_linear_expression_new.
+       (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
+       to gcc_tree_to_linear_expression.
+       (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
+       Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
+       (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
+       Pass it to lambda_body_vector_new and
+       lambda_body_vector_compute_new.
+       * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
+       (lambda-code.o): Likewise.
+
+2007-09-06  Chao-ying Fu  <fu@mips.com>
+
+       * ginclude/stdfix.h: New file.
+       * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
+       (convert.o): Add dependence on fixed-value.h.
+       * c-convert.c (convert): Support FIXED_POINT_TYPE.
+       * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
+       to define fixed-point constants.
+       (c_cpp_builtins): Define fixed-point constants.
+       * convert.c (fixed-value.h): New include.
+       (convert_to_real): Update comment to include fixed-point.
+       Support FIXED_POINT_TYPE.
+       (convert_to_integer): Update comment to include fixed-point.
+       Support FIXED_POINT_TYPE.
+       (convert_to_complex): Support FIXED_POINT_TYPE.
+       (convert_to_fixed): New function.
+       * convert.h (convert_to_fixed): Declare.
+       * genopinit.c: Add comment about $Q for only fixed-point modes.
+       (optabs): Add fract_optab, fractuns_optab, satfract_optab,
+       satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
+       sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
+       ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
+       usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
+       usneg_optab for fixed-point modes.
+       (gen_insn): Add force_fixed to track the $Q format for all fixed-point
+       modes.
+       * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
+       PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
+       unsigned saturation optabs, when type is saturating.
+       (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
+       (expand_fixed_convert): New function.
+       (gen_fixed_libfunc, gen_signed_fixed_libfunc,
+       gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
+       gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
+       gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
+       gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
+       gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
+       functions.
+       (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
+       ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
+       usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
+       ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
+       usneg_optab, fract_optab, fractuns_optab, satfract_optab,
+       satfractuns_optab.
+       Initialize fixed-point libraries, including add, ssadd, usadd, sub,
+       sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
+       ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
+       fractuns, satfractuns.
+       * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
+       OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
+       OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
+       OTI_ssmsub_widen,  OTI_usmsub_widen.
+       (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
+       usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
+       ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
+       umsub_widen_optab, usmsub_widen_optab): Define.
+       (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
+       COI_satfractuns.
+       (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
+       Define.
+       (expand_fixed_convert): Declare.
+       * expr.c (convert_move): Support the move of fixed-point modes.
+       (emit_move_insn_1): Handle fixed-point mode to move via integer.
+       (categorize_ctor_elements_1): Handle FIXED_CST.
+       (count_type_elements): Handle FIXED_POINT_TYPE.
+       (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
+       MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
+       Support FIXED_CST.
+       For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
+       multiply and add/subtract for fixed-point types.
+       For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
+       mode, we jump to binop directly.
+       Support FIXED_CONVERT_EXPR.
+       (do_store_flag): Check FIXED_CST to put a constant second.
+       (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
+       MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
+       (const_vector_from_tree): Support FIXED_CST.
+       * doc/extend.texi (Fixed-Point): New node.
+       * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
+       ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
+       satfract, fractuns, satfractuns): Document them.
+
+2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
+       addresses into I registers.
+
+2007-09-06  Jan Hubicka  <jh@suse.cz>
+           Andreas Tobler  <a.tobler@schweiz.org>
+
+       * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
+       sharing.
+       (machopic_legitimize_pic_address): Likewise.
+
 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
             Jan Hubicka  <jh@suse.cz>