+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * loop-unroll.c (struct iv_to_split): Add pointer to next.
+ (struct var_to_expand): Likewise.
+ (struct opt_info): Add head and tail for linked lists of the above.
+ (analyze_insn_to_expand_var): Initialize next.
+ (analyze_iv_to_split_insn): Likewise.
+ (analyze_insns_in_loop): Create linked lists.
+ (allocate_basic_variable): Simplify for use without hash table.
+ (insert_var_expansion_initialization): Likewise, make it type-safer.
+ (combine_var_copies_in_loop_exit): Likewise.
+ (apply_opt_in_copies): Walk lists rather than hash tables.
+ (release_var_copies): Simplified and inlined by hand into...
+ (free_opt_info): ... this function.
+
+2009-06-02 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
+ for field decls.
+
+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * cfgexpand.c (gimple_expand_cfg): Discard the source location
+ only for builtins that are not overridden.
+
+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
+ label string.
+
+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * df-core.c (df_ref_debug): Honor -fdump-noaddr.
+
+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * combine.c (move_deaths): Compare LUIDs within the same BB only.
+
+2009-06-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * common.opt (fdump-unnumbered-links): New.
+ * doc/invoke.texi (-fdump-unnumbered-links): Document it.
+ * print-rtl.c (flag_dump_unnumbered_links): New.
+ (print_rtx): Test it.
+
+2009-06-02 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
+ push/pop multiple to 8-byte alignment.
+
+2009-06-01 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (queued_cfa_restores): New static variable.
+ (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
+ functions.
+ (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
+ (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
+ Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
+ Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
+ note unconditionally.
+ (ix86_emit_restore_regs_using_mov): Likewise.
+ (ix86_emit_restore_sse_regs_using_mov): Likewise.
+ (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
+ it through to ix86_emit_restore_reg_using_pop.
+ (ix86_emit_leave): Add RED_OFFSET argument. Call
+ ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
+ instead of adding REG_CFA_OFFSET note unconditionally.
+ (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
+ the above functions. Call ix86_add_queued_cfa_restore_notes when
+ needed.
+
+ * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
+ force output of the label even for dwarf2out_do_cfi_asm.
+ (add_fde_cfi): If -g2 and above and cfi might change CFA,
+ force creation of CFI label and chain DW_CFA_set_loc jumping to it
+ for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
+ caller.
+ (dwarf2out_stack_adjust, dwarf2out_frame_debug,
+ dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
+ dwarf2out_cfi_label callers.
+ * tree.h (dwarf2out_cfi_label): Adjust prototype.
+ * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
+ Adjust dwarf2out_cfi_label callers.
+ * config/vax/vax.c (vax_output_function_prologue): Likewise.
+
+ * config/i386/i386.h (struct machine_cfa_state,
+ struct machine_function): Guard with ifndef USED_FOR_TARGET
+ instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
+
+ PR other/40024
+ * emutls.c (__emutls_get_address): Change arr->size to mean number
+ of allocated arr->data entries instead of # of slots + 1.
+
+ PR middle-end/40316
+ * recog.c (peep2_reinit_state): New function.
+ (peephole2_init_state): Use it at the end of a basic block and also
+ when seeing a RTX_FRAME_RELATED_P insn.
+
+2009-06-01 Steve Ellcey <sje@cup.hp.com>
+
+ * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
+ fixuns_truncrfdi2): New.
+ (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
+ *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
+ *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
+ *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
+ *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
+ *recip_approx): Remove.
+ (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
+ moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
+ divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
+ move to div.md.
+ * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
+ setf_exp_rf): New.
+
+2009-06-01 Ian Lance Taylor <iant@google.com>
+
+ * attribs.c (register_attribute): Use CONST_CAST.
+ * collect2.c (main): Use CONST_CAST2.
+ (scan_prog_file): Likewise.
+ * gcc.c (process_command, main): Likewise.
+ * toplev.c (toplev_main): Likewise.
+
+ * c-typeck.c (handle_warn_cast_qual): New static function,
+ partially broken out of build_c_cast.
+ (build_c_cast): Call handle_warn_cast_qual.
+ * doc/invoke.texi (Warning Options): Document new effect of
+ -Wcast-qual.
+
+2009-06-01 Aldy Hernandez <aldyh@redhat.com>
+
+ * diagnostic.c (diagnostic_build_prefix): Always print columns.
+ (diagnostic_report_current_module): Print columns.
+ * common.opt (flag_show_column): Enable by default.
+
+2009-06-01 Luis Machado <luisgpm@br.ibm.com>
+
+ * alias.c (find_base_term): Check for NULL term before returning.
+
+2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ Revert due to PR40320:
+
+ 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+ * calls.c (emit_library_call_value_1): Don't force_operand for move
+ and push insns.
+
+2009-06-01 Olivier Hainque <hainque@adacore.com>
+ Eric Botcazou <botcazou@adacore.com>
+
+ * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
+ to be processed as a bitfield for constructor output purposes.
+ * output.h (initializer_constant_valid_for_bitfield_p): Declare
+ new function.
+ * varasm.c (oc_local_state): New type, output_constructor
+ local state to support communication with helpers.
+ (oc_outer_state): New type, output_constructor outer state of
+ relevance in recursive calls.
+ (output_constructor_array_range): New output_constructor helper,
+ extracted code for an array range element.
+ (output_constructor_regular_field): New output_constructor helper,
+ extracted code for an element that is not a bitfield.
+ (output_constructor_bitfield): New output_constructor helper,
+ extracted code for a bitfield element. Accept an OUTER state
+ argument for recursive processing. Recurse on record or array
+ CONSTRUCTOR values, possibly past noop conversions.
+ (initializer_constant_valid_for_bitfield_p): New predicate. Whether
+ VALUE is a valid constant-valued expression for use in a static
+ bit-field initializer.
+ (output_constructor): Rework to use helpers. Accept and honor an
+ OUTER state argument for recursive calls. Return total size. Be
+ prepared for nested constructors initializing bitfields.
+ (output_constant): Feed OUTER in calls to output_constructor.
+
+2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * calls.c (emit_library_call_value_1): Don't force_operand for move
+ and push insns.
+
+2009-06-01 Nick Clifton <nickc@redhat.com>
+
+ * doc/invoke.texi (IA-64 Options): Fix typo.
+
+2009-06-01 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/39129
+ * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
+ printed message.
+ (vect_do_peeling_for_loop_bound): Use
+ LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
+ LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
+ (vect_loop_versioning): Likewise.
+ (vect_create_cond_for_alias_checks): Fix indentation.
+ * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
+ macros.
+ (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
+ (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
+ * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
+ "control flow in loop".
+ (vect_estimate_min_profitable_iters): Use
+ LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
+ LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
+ (vect_create_data_ref_ptr): Don't mention array dimension in printing.
+ * tree-vect-stmts.c (vectorizable_store): Replace the check that the
+ statement belongs to a group of strided accesses with the exact code
+ check.
+ (vectorizable_load): Likewise.
+ * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
+ (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
+
+2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * config/freebsd-stdint.h: New file.
+ * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
+ Add freebsd-stdint.h to tm_file.
+
+2009-06-01 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
+ (thumb2_extendhidi2): Likewise.
+
+2009-05-31 Ian Lance Taylor <iant@google.com>
+
+ * regstat.c (regstat_n_sets_and_refs): Remove duplicate
+ definition.
+
+2009-05-31 Ian Lance Taylor <iant@google.com>
+
+ * Makefile.in (except.o): Depend upon gt-except.h, not
+ gt-$(EXCEPT_H).
+ (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
+ (ipa-reference.o): Depend upon gt-ipa-reference.h.
+
+2009-05-31 Jason Merrill <jason@redhat.com>
+
+ * tree-pretty-print.c (print_call_name): Take the callee, not the
+ call itself. Make non-static. Use dump_function_name for
+ functions.
+ (dump_generic_node): Adjust.
+ * diagnostic.h: Declare print_call_name.
+ * gimple-pretty-print.c (dump_gimple_call): Use it.
+
+2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.md (ashldi3_std): New define_expand.
+ (ashldi3): Use it.
+
+2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/40313
+ * config/sh/sh.c: Include debug.h.
+ (sh_expand_epilogue): Emit a blockage insn before the frame
+ pointer adjustment also when dwarf2out_do_frame returns true.
+
+2009-05-31 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
+ (thumb2_extendqidi2): New pattern.
+
+2009-05-31 Ira Rosen <irar@il.ibm.com>
+
+ * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
+ mark phis for renaming.
+ * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
+ (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
+ Call mark_sym_for_renaming.
+ * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
+ * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
+ initialization and a call to mark_set_for_renaming.
+
+2009-05-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40304
+ * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
+ frame related even if !set_cfa && style < 0.
+
+2009-05-30 Kai Tietz <kai.tietz@onevision.com>
+
+ * config/i386/mingw-tls.c: New file.
+ * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
+ mingw-tls.c file.
+ * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
+ it for targets defining _WIN32 but not __CYGWIN__.
+
+2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * configure.ac: Add MPC support.
+
+ * config.in, configure: Regenerate.
+
+2009-05-29 Richard Henderson <rth@redhat.com>
+
+ * cfgcleanup.c (try_crossjump_to_edge): Only skip past
+ NOTE_INSN_BASIC_BLOCK.
+ * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
+ Duplicate NOTE_INSN_EPILOGUE_BEG notes.
+ * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
+ to be deleted.
+ * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
+ add in_use field.
+ (add_cfi): Disable check redefining cfa away from drap.
+ (lookup_cfa_1): Add remember argument; handle remember/restore.
+ (lookup_cfa): Pass remember argument.
+ (cfa_remember): New.
+ (compute_barrier_args_size_1): Remove sibcall check.
+ (dwarf2out_frame_debug_def_cfa): New.
+ (dwarf2out_frame_debug_adjust_cfa): New.
+ (dwarf2out_frame_debug_cfa_offset): New.
+ (dwarf2out_frame_debug_cfa_register): New.
+ (dwarf2out_frame_debug_cfa_restore): New.
+ (dwarf2out_frame_debug): Handle REG_CFA_* notes.
+ (dwarf2out_begin_epilogue): New.
+ (dwarf2out_frame_debug_restore_state): New.
+ (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
+ DW_CFA_restore_state.
+ (output_cfi_directive): Likewise.
+ (convert_cfa_to_fb_loc_list): Likewise.
+ (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
+ * dwarf2out.h: Update.
+ * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
+ (copy_insn_1): Early out for null.
+ * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
+ and dwarf2out_frame_debug_restore_state.
+ * function.c (prologue, epilogue, sibcall_epilogue): Remove.
+ (prologue_insn_hash, epilogue_insn_hash): New.
+ (free_after_compilation): Adjust freeing accordingly.
+ (record_insns): Create hash table if needed; push insns into
+ hash instead of array.
+ (maybe_copy_epilogue_insn): New.
+ (contains): Search hash table instead of array.
+ (sibcall_epilogue_contains): Remove.
+ (thread_prologue_and_epilogue_insns): Split eh_return insns
+ and mark them as epilogues.
+ (reposition_prologue_and_epilogue_notes): Rewrite epilogue
+ scanning in terms of basic blocks.
+ * insn-notes.def (CFA_RESTORE_STATE): New.
+ * jump.c (returnjump_p_1): Accept EH_RETURN.
+ (eh_returnjump_p_1, eh_returnjump_p): New.
+ * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
+ CFA_REGISTER, CFA_RESTORE): New.
+ * rtl.def (EH_RETURN): New.
+ * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
+
+ * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
+ (eh_return_internal): Use eh_return rtx; split w/ epilogue.
+
+ * config/i386/i386.c (gen_push): Update cfa state.
+ (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
+ add a CFA_ADJUST_CFA note.
+ (ix86_dwarf_handle_frame_unspec): Remove.
+ (ix86_expand_prologue): Update cfa state.
+ (ix86_emit_restore_reg_using_pop): New.
+ (ix86_emit_restore_regs_using_pop): New.
+ (ix86_emit_leave): New.
+ (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
+ (ix86_expand_epilogue): Add notes for unwinding the epilogue.
+ * config/i386/i386.h (struct machine_cfa_state): New.
+ (ix86_cfa_state): New.
+ * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
+ (eh_return_internal): Merge from eh_return_<mode>,
+ use eh_return rtx, split w/ epilogue.
+
+2009-05-29 Ian Lance Taylor <iant@google.com>
+
+ * builtins.c (validate_gimple_arglist): Don't use va_arg with
+ enum type.
+ * calls.c (emit_library_call_value_1): Likewise.
+
+ * c-typeck.c (c_build_va_arg): New function.
+ * c-tree.h (c_build_va_arg): Declare.
+ * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
+ instead of build_va_arg.
+
+2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
+ (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
+ (ptr_difference_cost): Use affine combinations to compute it.
+ (difference_cost): Likewise.
+ (get_computation_cost_at): Compute more accurate cost for addresses
+ if the ratio is a multiplier allowed in addresses.
+ For non-addresses, consider that an additional offset or symbol is
+ added only once.
+
+2009-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (ix86_decompose_address): Avoid useless
+ 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
+
+ * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
+ TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
+ (prefix_rex): For UNIT_MMX don't imply the prefix by default
+ if MODE_DI.
+ (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
+ to 1 for TYPE_SSE{IADD1,CVT1}.
+ (prefix_vex_imm8): Removed.
+ (length_vex): Only pass 1 as second argument to
+ ix86_attr_length_vex_default if prefix_extra is 0.
+ (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
+ (length): For prefix vex computation use length_immediate
+ attribute instead of prefix_vex_imm8.
+ (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
+ addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
+ *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
+ *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
+ (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
+ *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
+ a space in between the operands.
+ (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
+ if one operand is 0xff and the other one si, di, bp or sp.
+ (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
+ other one si, di, bp or sp.
+ (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
+ (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
+ type and mode attributes.
+ (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
+ (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
+ prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
+ (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
+ prefix_data16 attribute iff MODE_DF.
+ (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
+ (fix_trunc<mode>di_sse): Set prefix_rex attribute.
+ (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
+ constm128_operand in length_immediate computation.
+ (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
+ (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
+ (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
+ length_immediate attribute to 1.
+ (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
+ (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
+ for certain alternatives.
+ (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
+ prefix_data16 attribute if MODE_V1DF.
+ (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
+ length_immediate to 1.
+ (set_got_rex64, set_rip_rex64): Remove length attribute, set
+ length_address to 4, set mode attribute to MODE_DI.
+ (set_got_offset_rex64): Likewise. Set length_immediate to 0.
+ (fxam<mode>2_i387): Set length attribute to 4.
+ (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
+ *prefetch_3dnow_rex): Override length_address attribute.
+ (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
+ attributes.
+ * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
+ (constm128_operand): Removed.
+ * config/i386/i386.c (memory_address_length): For
+ disp && !index && !base in 64-bit mode account for SIB byte if
+ print_operand_address can't optimize disp32 into disp32(%rip)
+ and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
+ for fs: or gs: segment.
+ (ix86_attr_length_immediate_default): When checking if shortform
+ is possible, truncate immediate to the length of the non-shortened
+ immediate.
+ (ix86_attr_length_address_default): Ignore MEM_P operands
+ with X constraint.
+ (ix86_attr_length_vex_default): Only check for DImode on
+ GENERAL_REG_P operands.
+ * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
+ prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
+ (sse_cvttps2pi): Clear prefix_rep attribute.
+ (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
+ attribute.
+ (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
+ (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
+ *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
+ iff operand 2 is const_int_operand.
+ (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
+ sse2_shufpd_<mode>): Set length_immediate attribute to 1.
+ (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
+ instead of vex.
+ (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
+ prefix_data16.
+ (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
+ prefix_data16 attribute for movlpd and movhpd instructions.
+ (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
+ length_immediate for shufpd instruction.
+ (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
+ (avx_cmpp<avxmodesuffixf2c><mode>3,
+ avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
+ <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
+ avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
+ *vec_dupv4sf_avx, *vec_dupv4sf): Set
+ length_immediate attribute to 1.
+ (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
+ (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
+ (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
+ prefix_data16 attribute for the first alternative to 1.
+ (*avx_loadlps): Override length_immediate for the first alternative.
+ (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
+ attributes for second alternative.
+ (*vec_concatv2sf_sse4_1): Override length_immediate and
+ prefix_data16 attributes for second alternative.
+ (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
+ vec_extract_hi_<mode>, vec_extract_lo_v16hi,
+ vec_extract_hi_v16hi, vec_extract_lo_v32qi,
+ vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
+ (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
+ prefix_data16 and length_immediate to 1.
+ (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
+ to 1.
+ (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
+ prefix_extra attribute for variants that don't have 0f prefix
+ alone.
+ (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
+ (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
+ *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
+ *sse4_1_pextrd): Set length_immediate to 1.
+ (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
+ (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
+ to 1.
+ (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
+ *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
+ length_immediate to 1 for second alternative.
+ (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
+ prefix_extra and length_immediate attributes for the first
+ alternative.
+ (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
+ first alternative.
+ (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
+ to 1 for the first and third alternative.
+ (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
+ alternative.
+ (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
+ attribute.
+ (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
+ attribute to 0.
+ (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
+ *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
+ *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
+ *avx_psign<mode>3): Set prefix_extra attribute to 1.
+ (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
+ ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
+ ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
+ ssse3_psign<mode>3): Override prefix_rex attribute.
+ (*avx_palignrti): Override prefix_extra and length_immediate
+ to 1.
+ (ssse3_palignrti): Override length_immediate to 1.
+ (ssse3_palignrdi): Override length_immediate to 1, override
+ prefix_rex attribute.
+ (abs<mode>2): Override prefix_rep to 0, override prefix_rex
+ attribute.
+ (sse4a_extrqi): Override length_immediate to 2.
+ (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
+ (sse4a_insertq): Override prefix_data16 to 0.
+ (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
+ avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
+ avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
+ *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
+ avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
+ and length_immediate to 1.
+ (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
+ sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
+ sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
+ sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
+ and length_immediate to 1.
+ (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
+ (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
+ (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
+ avx_ptest256): Override prefix_extra to 1.
+ (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
+ Override prefix_data16 and length_immediate to 1.
+ (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
+ sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
+ sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
+ sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
+ prefix_data16 to 0 and prefix_extra to 2.
+ (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
+ (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
+ attribute.
+ (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
+ sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
+ Override prefix_data16 and prefix_rep to 0, length_immediate to 1
+ and prefix_extra to 2.
+ (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
+ prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
+ (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
+ avx_vpermilvar<mode>3,
+ avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
+ avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
+ avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
+ avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
+ Override prefix_extra to 1.
+ (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
+ (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
+ vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
+ vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
+ prefix_extra and length_immediate to 1.
+ (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
+ modrm to 0.
+ (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
+ to 1 for the first alternative.
+ * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
+ prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
+ cases.
+ (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
+ *movv2sf_internal_avx, *movv2sf_internal): Override
+ prefix_rep attribute for certain alternatives.
+ (*mov<mode>_internal): Override prefix_rep or prefix_data16
+ attributes for certain alternatives.
+ (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
+ attributes for certain alternatives.
+ (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
+ *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
+ mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
+ mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
+ *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
+ mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
+ mmx_pswapdv2si2): Set prefix_extra attribute to 1.
+ (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
+ length_immediate to 1 if operand 2 is const_int_operand.
+ (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
+ *vec_extractv2si_1): Set length_immediate
+ attribute to 1.
+ (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
+ using old 3DNOW insn rather than SSE/3DNOW_A.
+ (mmx_emms, mmx_femms): Clear modrm attribute.
+
+2009-05-29 Martin Jambor <mjambor@suse.cz>
+
+ * tree-sra.c: New implementation of SRA.
+
+ * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
+ (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
+ (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
+ * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
+ (SRA_MAX_STRUCTURE_COUNT): Removed.
+ (SRA_FIELD_STRUCTURE_RATIO): Removed.
+ * doc/invoke.texi (sra-max-structure-size): Removed.
+ (sra-field-structure-ratio): Removed.
+
+2009-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40291
+ * builtins.c (expand_builtin_memcmp): Convert len to sizetype
+ before expansion.
+
+2009-05-29 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/40101
+ * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
+ seqno. Adjust comment.
+ * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
+ inserting bookkeeping before a jump, the jump is not scheduled.
+ When no positive seqno found, provide a value. Add comment.
+
+2009-05-29 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
+ short-cutting on the first component.
+
+2009-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/39958
+ * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
+ for trees other than decls/types.
+
+2009-05-29 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-operands.c (get_expr_operands): Do not handle
+ INDIRECT_REFs in the handled-component case. Remove
+ unused get_ref_base_and_extent case.
+ * tree-dfa.c (get_ref_base_and_extent): Avoid calling
+ tree_low_cst and host_integerp where possible.
+ * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
+ codes for equivalence.
+ * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
+
+2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
+
+ * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
+ to tmake_file for i[34567]86-*-cygwin*.
+
+2009-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/40017
+ * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
+ (altivec_categorize_keyword, init_vector_keywords,
+ rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
+ similar to bool.
+
+2009-05-29 Kai Tietz <kai.tietz@onevision.com>
+
+ * tree.c (handle_dll_attribute): Check if node is
+ of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
+
+2009-05-29 Richard Earnshaw <rearnsha@arm.com>
+
+ * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
+ component.
+ (thumb2_zero_extendqidi2): Likewise.
+
+2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
+ instead of gen_movrt.
+ * config/sh/sh.md (movrt): Remove.
+
+2009-05-28 Steve Ellcey <sje@cup.hp.com>
+
+ * doc/invoke.texi (IA-64 Options)
+ Add -msdata, -mfused-madd, -mno-inline-float-divide,
+ -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
+ -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
+ -msched-prefer-non-control-spec-insns,
+ -msched-stop-bits-after-every-cycle,
+ -msched-count-spec-in-critical-path,
+ -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
+ -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
+ Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
+ and -msched-spec-verbose.
+
+2009-05-28 Joseph Myers <joseph@codesourcery.com>
+
+ * config/arm/lib1funcs.asm (__clear_cache): Define if
+ L_clear_cache.
+ * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
+ error if used.
+ * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
+
+2009-05-28 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (ao_ref_init): New function.
+ (ao_ref_base): Likewise.
+ (ao_ref_base_alias_set): Likewise.
+ (ao_ref_alias_set): Likewise.
+ (refs_may_alias_p_1): Change signature.
+ (refs_may_alias_p): Adjust.
+ (refs_anti_dependent_p): Likewise.
+ (refs_output_dependent_p): Likewise.
+ (call_may_clobber_ref_p_1): Change signature.
+ (call_may_clobber_ref_p): Adjust.
+ (stmt_may_clobber_ref_p_1): New function split out from ...
+ (stmt_may_clobber_ref_p): ... here.
+ (maybe_skip_until): Adjust signature.
+ (get_continuation_for_phi): Likewise.
+ (walk_non_aliased_vuses): Likewise.
+ * tree-ssa-alias.h (struct ao_ref_s): New structure type.
+ (ao_ref_init): Declare.
+ (ao_ref_base): Likewise.
+ (ao_ref_alias_set): Likewise.
+ (stmt_may_clobber_ref_p_1): Likewise.
+ (walk_non_aliased_vuses): Adjust.
+ * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
+ (get_ref_from_reference_ops): remove.
+ (vn_reference_lookup_2): Adjust signature.
+ (vn_reference_lookup_3): Do not re-build trees. Handle unions.
+ (vn_reference_lookup_pieces): Adjust signature, do not re-build
+ trees.
+ (vn_reference_lookup): Adjust.
+ (vn_reference_insert): Likewise.
+ (vn_reference_insert_pieces): Adjust signature.
+ (visit_reference_op_call): Adjust.
+ * tree-ssa-pre.c (get_expr_type): Simplify.
+ (phi_translate_1): Adjust.
+ (compute_avail): Likewise.
+ (translate_vuse_through_block): Do not re-build trees.
+ (value_dies_in_block_x): Likewise.
+ * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
+ fields.
+ (vn_reference_lookup_pieces): Adjust declaration.
+ (vn_reference_insert_pieces): Likewise.
+
+2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
+ with checking disabled.
+
+2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR target/37216
+
+ * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
+ macro definition for support of three-operand format aligned
+ .comm directive in assembler on cygwin/pe/mingw target OS.
+ * configure: Regenerate.
+ * config.h: Regenerate.
+
+ * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
+ aligned form of .comm directive if -mpe-aligned-commons is in effect.
+ * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
+
+ * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
+ * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
+
2009-05-28 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/40254
(Interacting with the GCC Garbage Collector): Added new section.
(Giving information about a plugin): Added new section for
PLUGIN_INFO.
- * testsuite/gcc.dg/plugin/plugin.exp: Added ggcplug.c test plugin
- with ggcplug-test-1.c for testing PLUGIN_GGC_MARKING etc...
- * testsuite/gcc.dg/plugin/ggcplug-test-1.c: Added new file.
- * testsuite/gcc.dg/plugin/ggcplug.c: Added new file.
* ggc.h (ggc_register_root_tab): Added declaration.
* gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
(PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.