X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=54dc9b72349a6921f056c7079bbd6faefb74e66c;hp=2dbe9ef40f0ea083a3fc99513095e2f9c73b8ee5;hb=4437c3fec1773050625ad42cb5fefb5350f355ed;hpb=b384c0ce966ed82f59f377953329551a4c7e8136 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2dbe9ef40f0..54dc9b72349 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1239 @@ +2009-05-31 Jason Merrill + + * 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 + + * config/sh/sh.md (ashldi3_std): New define_expand. + (ashldi3): Use it. + +2009-05-31 Kaz Kojima + + 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 + + * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern. + (thumb2_extendqidi2): New pattern. + +2009-05-31 Ira Rosen + + * 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 + + 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 + + * 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 + + * configure.ac: Add MPC support. + + * config.in, configure: Regenerate. + +2009-05-29 Richard Henderson + + * 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_, + use eh_return rtx, split w/ epilogue. + +2009-05-29 Ian Lance Taylor + + * 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 + + * tree-ssa-loop-ivopts.c (strip_offset_1) : New case. + (force_expr_to_var_cost) : 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 + + * 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_truncdi_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, *sse_setcc, *sse5_setcc): 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. + (fxam2_i387): Set length attribute to 4. + (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow, + *prefetch_3dnow_rex): Override length_address attribute. + (sse4_2_crc32): 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 (_comi, _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_ashr3, ashr3, *avx_lshr3, lshr3, + *avx_ashl3, ashl3): Set length_immediate attribute to 1 + iff operand 2 is const_int_operand. + (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_, + sse2_shufpd_): 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_cmpp3, + avx_cmps3, *avx_maskcmp3, + _maskcmp3, _vmmaskcmp3, + avx_shufps256_1, *avx_shufps_, sse_shufps_, + *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_, + vec_extract_hi_, 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_3, *avx_eq3, *avx_gt3): Set + prefix_extra attribute for variants that don't have 0f prefix + alone. + (*avx_pinsr): 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_psign3): 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_psign3): 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. + (abs2): 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, + avx_blendvp, + avx_dpp, *avx_mpsadbw, + *avx_pblendvb, *avx_pblendw, avx_roundp256, + avx_rounds256): Override prefix_extra + and length_immediate to 1. + (sse4_1_blendp, sse4_1_dpp, + 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): Override prefix_data16 to 1. + (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1. + (*avx_packusdw, avx_vtestp, + avx_ptest256): Override prefix_extra to 1. + (sse4_1_roundp, sse4_1_rounds): + 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_vrotl3, sse5_ashl3, sse5_lshl3): Override + prefix_data16 to 0 and prefix_extra to 2. + (sse5_rotl3, sse5_rotr3): Override length_immediate to 1. + (sse5_frcz2, sse5_vmfrcz2): Don't override prefix_extra + attribute. + (*sse5_vmmaskcmp3, sse5_com_tf3, + sse5_maskcmp3, sse5_maskcmp3, sse5_maskcmp_uns3): + Override prefix_data16 and prefix_rep to 0, length_immediate to 1 + and prefix_extra to 2. + (sse5_maskcmp_uns23, sse5_pcom_tf3): Override + prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2. + (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast, + avx_vpermilvar3, + avx_vbroadcasts, + avx_vbroadcastss256, avx_vbroadcastf128_p256, + avx_maskloadp, + avx_maskstorep): + Override prefix_extra to 1. + (aeskeygenassist, pclmulqdq): Override length_immediate to 1. + (*vpclmulqdq, avx_vpermil, avx_vperm2f1283, + vec_set_lo_, vec_set_hi_, 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_avx): Override prefix_extra and length_immediate + to 1 for the first alternative. + * config/i386/mmx.md (*mov_internal_rex64): Override + prefix_rep, prefix_data16 and/or prefix_rex attributes in certain + cases. + (*mov_internal_avx, *movv2sf_internal_rex64, + *movv2sf_internal_avx, *movv2sf_internal): Override + prefix_rep attribute for certain alternatives. + (*mov_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_v2sf3_finite, *mmx_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_ashr3, mmx_lshr3, mmx_ashl3): 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 + + * 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 + + PR middle-end/40291 + * builtins.c (expand_builtin_memcmp): Convert len to sizetype + before expansion. + +2009-05-29 Andrey Belevantsev + + 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 + + * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove + short-cutting on the first component. + +2009-05-29 Jakub Jelinek + + 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 + + * 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 + + * 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 + + 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 + + * tree.c (handle_dll_attribute): Check if node is + of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check. + +2009-05-29 Richard Earnshaw + + * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split + component. + (thumb2_zero_extendqidi2): Likewise. + +2009-05-28 Kaz Kojima + + * 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 + + * 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 + + * 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 + + * 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 + + * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use + with checking disabled. + +2009-05-28 Dave Korn + + 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 + + PR tree-optimization/40254 + * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account + in analysis of basic blocks. + +2009-05-28 Adam Nemet + + PR middle-end/33699 + * target.h (struct gcc_target): Fix indentation. Add + const_anchor. + * target-def.h (TARGET_CONST_ANCHOR): New macro. + (TARGET_INITIALIZER): Use it. + * cse.c (CHEAPER): Move it up to the other macros. + (insert): Rename this ... + (insert_with_costs): ... to this. Add cost parameters. Update + function comment. + (insert): New function. Call insert_with_costs. + (compute_const_anchors, insert_const_anchor, insert_const_anchors, + find_reg_offset_for_const, try_const_anchors): New functions. + (cse_insn): Call try_const_anchors. Adjust cost of src_related + when using a const-anchor. Call insert_const_anchors. + * config/mips/mips.c (mips_set_mips16_mode): Set + targetm.const_anchor. + * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR. + +2009-05-28 Alexandre Oliva + + * tree-inline.c (remap_decls): Enable nonlocalized variables + when not optimizing. + +2009-05-28 Alexandre Oliva + + * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing. + Simplify other tests involving optimize. + +2009-05-27 Tom Tromey + + * unwind-dw2.c (_Unwind_DebugHook): New function. + (uw_install_context): Call _Unwind_DebugHook. + +2009-05-27 Tom Tromey + + * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++ + +2009-05-27 Ian Lance Taylor + + * Makefile.in (LINKER, LINKER_FLAGS): Define. + (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define. + (ALL_LINKERFLAGS): Define. + (xgcc$(exeext)): Change $(COMPILER) to $(LINKER). + (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise. + (collect2$(exeext), mips-tfile, mips-tdump): Likewise. + (gcov$(exeext), gcov-dump$(exeext)): Likewise. + (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to + $(LINKER_FOR_BUILD). + (build/gcov-iov$(build_exeext)): Likewise. + +2009-05-27 Julian Brown + + * gcse.c (target.h): Include. + (can_assign_to_reg_without_clobbers_p): Check that the target allows + copy of argument to a pseudo register. + +2009-05-27 Diego Novillo + + * tree-ssa-live.c (dump_scope_block): Document arguments. + (dump_scope_blocks): Document. + (debug_scope_blocks): New. + * tree-flow.h (debug_scope_blocks): Declare. + +2009-05-21 Denis Chertykov + + * doc/contrib.texi (Contributors): add myself to the list. + +2009-05-27 Olivier Hainque + + * expr.c (target_align): New function. Alignment the TARGET of an + assignment may be assume to have. + (highest_pow2_factor_for_target): Use it instead of relying on + immediate tree attributes of TARGET, not necessarily honored when + intermediate bitfields are involved. + +2009-05-27 H.J. Lu + + PR target/40266 + * config/i386/driver-i386.c (host_detect_local_cpu): Support + AVX, SSE4, AES, PCLMUL and POPCNT. + +2009-05-27 Diego Novillo + + * tree-pretty-print.c (dump_location): New. + (dump_generic_node): Call it. + Factor code to handle BLOCK nodes ... + (dump_block_node): ... here. + +2009-05-27 Rafael Avila de Espindola + + * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with + it. + * doc/plugins.texi: Document that gcc-plugin.h must be the first to be + included. + * gcc-plugin.h: Include config.h and system.h. + (IN_GCC): Define if not defined. + +2009-05-27 Hans-Peter Nilsson + + PR middle-end/40249 + * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions + with -fno-inline. + +2009-05-27 Shujing Zhao + + * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where + applicable. + * config/m32r/m32r.h: Ditto. + * config/m32r/m32r.md: Ditto. + * config/m32r/predicates.md: Ditto. + +2009-05-27 Alexandre Oliva + + * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr. + +2009-05-26 Basile Starynkevitch + + * doc/plugins.texi + (Loading plugins): typo. + (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START, + PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS. + (Interacting with the GCC Garbage Collector): Added new section. + (Giving information about a plugin): Added new section for + PLUGIN_INFO. + * 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. + (register_callback): Improved comment in declaration. + * ggc-common.c (const_ggc_root_tab_t) Added new typedef for + vectors. + (extra_root_vec) Added static variable for dynamic roots + registration. + (ggc_register_root_tab) Added new routine. + (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke + PLUGIN_GGC_MARKING event. + * ggc-zone.c: Include plugin.h. + (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events. + * ggc-page.c: Include plugin.h. + (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events. + * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START, + PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS + (register_callback): check lack of callbacks for + pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS, + PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END. + (invoke_plugin_callbacks): Handle PLUGIN_GGC_START, + PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS. + * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added + dependency on plugin.h. + (plugin.o): Added dependency on ggc.h... + +2009-05-26 Richard Guenther + + PR middle-end/40248 + Revert + * expr.c (expand_expr_real_1): Avoid calling do_store_flag + with mismatched comparison modes. + + * expr.c (expand_expr_real_1): Expand the operand of a + VIEW_CONVERT_EXPR in its natural mode. + +2009-05-26 Ian Lance Taylor + + * Makefile.in (COMPILER, COMPILER_FLAGS): Define. + (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define. + (ALL_COMPILERFLAGS): Define. + (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER). + (cc1-dummy$(exeext), cc1$(exeext)): Likewise. + (collect2$(exeext), collect2.o): Likewise. + (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise. + (gcc-options.o, version.o, prefix.o, toplev.o): Likewise. + ($(out_object_file), mips-tfile, mips-tdump): Likewise. + (libbackend.o, intl.o, cppdefault.o): Likewise. + (gcov$(exeext), gcov-dump$(exeext)): Likewise. + (build/%.o): Use $(COMPILER_FOR_BUILD). + (build/gen%$(build_exeext)): Likewise. + (build/gcov-iov$(build_exeext)): LIkewise. + * config/t-darwin (darwin.o): Use $(COMPILER). + (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise. + * config/t-sol2 (sol2-c.o): Likewise. + (sol2.o): Likewise. + * config/t-vxworks (vxworks.o): Likewise. + * config/x-darwin (host-darwin.o): Likewise. + * config/x-hpux (host-hpux.o): Likewise. + * config/x-linux (host-linux.o): Likewise. + * config/x-solaris (host-solaris.o): Likewise. + * config/alpha/x-alpha (driver-alpha.o): Likewise. + * config/arm/t-arm (arm-c.o): Likewise. + * config/arm/t-pe (pe.o): Likewise. + * config/arm/t-wince-pe (pe.o): Likewise. + * config/i386/t-cygming (winnt.o): Likewise. + (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise. + * config/i386/t-cygwin (cygwin1.o): Likewise. + (cygwin2.o): Likewise. + * config/i386/t-i386 (i386-c.o): Likewise. + * config/i386/t-interix (winnt.o): Likewise. + * config/i386/t-netware (netware.o): Likewise. + * config/i386/t-nwld (nwld.o): Likewise. + * config/i386/x-darwin (host-i386-darwin.o): Likewise. + * config/i386/x-i386 (driver-i386.o): Likewise. + * config/i386/x-cygwin (host-cygwin.o): Likewise. + * config/i386/x-mingw32 (host-mingw32.o): Likewise. + * config/ia64/t-ia64 (ia64-c.o): Likewise. + * config/m32c/t-m32c (m32c-pragma.o): Likewise. + * config/mips/x-native (driver-native.o): Likewise. + * config/rs6000/t-rs6000 (rs6000-c.o): Likewise. + * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise. + * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise. + * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise. + * config/score/t-score-elf (score7.o): Likewise. + (score3.o): Likewise. + * config/sh/t-sh (sh-c.o): Likewise. + * config/sh/t-symbian (sh-c.o): Likewise. + (symbian.o): Likewise. + * config/spu/t-spu-elf (spu-c.o): Likewise. + * config/v850/t-v850 (v850-c.o): Likewise. + * config/v850/t-v850e (v850-c.o): Likewise. + +2009-05-26 Richard Guenther + + PR tree-optimization/40122 + * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to + VECTOR_CSTs if possible. + (fold_gimple_assign): Likewise. + +2009-05-26 Richard Guenther + + PR middle-end/40252 + * fold-const.c (fold_binary): Use the correct types for building + rotates. + +2009-05-26 Richard Guenther + + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove + redundant calls to merge_alias_info. + (bump_vector_ptr): Likewise. + * tree-ssa-copy.c (merge_alias_info): Remove. + (replace_exp_1): Remove call to merge_alias_info. + (propagate_tree_value): Likewise. + (fini_copy_prop): Propagate points-to info. + * tree-flow.h (merge_alias_info): Remove. + +2009-05-07 Hariharan Sandanagobalane + + * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove. + +2009-05-25 Jan Hubicka + + * cgraph.c (dump_cgraph_node): Dump size/time/benefit. + * cgraph.h (struct inline_summary): New filed self_wize, + size_inlining_benefit, self_time and time_inlining_benefit. + (struct cgraph_global_info): Replace insns by time ans size fields. + * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size + (ipcp_estimate_growth, ipcp_insert_stage): Likewise. + (ipcp_update_callgraph): Do not touch function bodies. + * ipa-inline.c: Include except.h + (MAX_TIME): New constant. + (overall_insns): Remove. + (leaf_node_p): New. + (overall_size, max_benefit): New static variables. + (cgraph_estimate_time_after_inlining): New function. + (cgraph_estimate_size_after_inlining): Rewrite using benefits. + (cgraph_clone_inlined_nodes): Update size. + (cgraph_mark_inline_edge): Update size. + (cgraph_estimate_growth): Use size info. + (cgraph_check_inline_limits): Check size. + (cgraph_default_inline_p): Likewise. + (cgraph_edge_badness): Compute badness based on benefit and size cost. + (cgraph_decide_recursive_inlining): Check size. + (cgraph_decide_inlining_of_small_function): Update size; dump sizes and + times. + (cgraph_decide_inlining): Likewise. + (cgraph_decide_inlining_incrementally): Likewise; honor + PARAM_EARLY_INLINING_INSNS. + (likely_eliminated_by_inlining_p): New predicate. + (estimate_function_body_sizes): New function. + (compute_inline_parameters): Use it. + * except.c (must_not_throw_labels): New function. + * except.h (must_not_throw_labels): Declare. + * tree-inline.c (init_inline_once): Kill inlining_weigths + * tree-ssa-structalias.c: Avoid uninitialized warning. + * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300. + (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60. + (PARAM_INLINE_CALL_COST): Remove. + (PARAM_EARLY_INLINING_INSNS): New. + +2009-05-25 Richard Guenther + + PR tree-optimization/36327 + * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker + callback for reference translation or lookup at the point + of may-defs. + * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype. + * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out + for union COMPONENT_REFs. + (vn_reference_lookup_3): New callback. Lookup from memset + and CONSTRUCTOR assignment, translate through struct copies. + (vn_reference_lookup_pieces): Make sure to not free the + passed operands array. Adjust walk_non_aliased_vuses call. + (vn_reference_lookup): Adjust walk_non_aliased_vuses call, + make sure we do not leak memory. + +2009-05-25 Richard Guenther + + * tree-ssa-alias.h (dump_points_to_solution): Declare. + * tree-inline.c (expand_call_inline): Reset the escaped and + callused solutions. + * tree-ssa-structalias.c (pass_build_ealias): New. + * tree-pass.h (pass_build_ealias): Declare. + * passes.c (init_optimization_passes): Add PTA during + early optimizations. + * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED + and CALLUSED solutions. + (dump_points_to_solution): New function, split out from ... + (dump_points_to_info_for): ... here. + * tree-parloops.c (parallelize_loops): Reset the escaped and + callused solutions. + +2009-05-25 Rainer Orth + + PR bootstrap/40027 + * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing. + * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define. + +2009-05-25 Ira Rosen + + PR tree-optimization/40238 + * tree-vect-stmts.c (vect_init_vector): Insert initialization + statements after basic block's labels. + * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() + to free the allocated memory. + +2009-05-24 Kaz Kojima + + * gcc/config/sh/sh.c (sh_set_return_address): Mark store of + return address with a USE. + +2009-05-24 Richard Guenther + + PR middle-end/40233 + * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs + array type from the main variant of the inner type. + +2009-05-24 Jan-Benedict Glaw + + * config/vax/vax-protos.h (legitimate_constant_address_p): Change + definition to bool (from int) to un-break build. + (legitimate_constant_p, vax_mode_dependent_address_p): Likewise. + +2009-05-24 Paolo Bonzini + + * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes, + discard_stmt_changes): Delete. + * tree-ssa-operands.c (scb_stack): Delete. + (init_ssa_operands): Do not initialize it. + (fini_ssa_operands): Do not free it. + (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete. + + * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with + update_stmt, remove the others. Fix comments. + * tree-dfa.c (optimize_stack_restore): Likewise. + * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise. + * tree-ssa-loop-ivopts.c (rewrite_use): Likewise. + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise. + * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins): + Likewise. + * tree-ssa-propagate.c (substitute_and_fold): Likewise. + * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise. + (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan. + (optimize_stmt): Likewise, adjusting access to stmts_to_rescan. + (stmts_to_rescan): Change item type to gimple. + (tree_ssa_dominator_optimize): Change type of stmts_to_rescan. + +2009-05-24 Ira Rosen + + * doc/passes.texi (Tree-SSA passes): Document SLP pass. + * tree-pass.h (pass_slp_vectorize): New pass. + * params.h (SLP_MAX_INSNS_IN_BB): Define. + * timevar.def (TV_TREE_SLP_VECTORIZATION): Define. + * tree-vectorizer.c (timevar.h): Include. + (user_vect_verbosity_level): Declare. + (vect_location): Fix comment. + (vect_set_verbosity_level): Update user_vect_verbosity_level + instead of vect_verbosity_level. + (vect_set_dump_settings): Add an argument. Ignore user defined + verbosity if dump flags require higher level of verbosity. Print to + stderr only for loop vectorization. + (vectorize_loops): Update call to vect_set_dump_settings. + (execute_vect_slp): New function. + (gate_vect_slp): Likewise. + (struct gimple_opt_pass pass_slp_vectorize): New. + * tree-vectorizer.h (struct _bb_vec_info): Define along macros to + access its members. + (vec_info_for_bb): New function. + (struct _stmt_vec_info): Add bb_vinfo and a macro for its access. + (VECTORIZATION_ENABLED): New macro. + (SLP_ENABLED, SLP_DISABLED): Likewise. + (vect_is_simple_use): Add bb_vec_info argument. + (new_stmt_vec_info, vect_analyze_data_ref_dependences, + vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment, + vect_analyze_data_ref_accesses, vect_analyze_data_refs, + vect_schedule_slp, vect_analyze_slp): Likewise. + (vect_analyze_stmt): Add slp_tree argument. + (find_bb_location): Declare. + (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise. + * tree-vect-loop.c (new_loop_vec_info): Adjust function calls. + (vect_analyze_loop_operations, vect_analyze_loop, + get_initial_def_for_induction, vect_create_epilog_for_reduction, + vect_finalize_reduction, vectorizable_reduction, + vectorizable_live_operation, vect_transform_loop): Likewise. + * tree-data-ref.c (dr_analyze_innermost): Update comment, + skip evolution analysis if analyzing a basic block. + (dr_analyze_indices): Likewise. + (initialize_data_dependence_relation): Skip the test whether the + object is invariant for basic blocks. + (compute_all_dependences): Skip dependence analysis for data + references in basic blocks. + (find_data_references_in_stmt): Don't fail in case of invariant + access in basic block. + (find_data_references_in_bb): New function. + (find_data_references_in_loop): Move code to + find_data_references_in_bb and add a call to it. + (compute_data_dependences_for_bb): New function. + * tree-data-ref.h (compute_data_dependences_for_bb): Declare. + * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case + that STEP is 0. + (vect_analyze_data_ref_dependence): Check for interleaving in case of + unknown dependence in basic block and fail in case of dependence in + basic block. + (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data + dependence instances from either loop or basic block vectorization + info. + (vect_compute_data_ref_alignment): Check if it is loop vectorization + before calling nested_in_vect_loop_p. + (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data + dependence instances from either loop or basic block vectorization + info. + (vect_verify_datarefs_alignment): Likewise. + (vect_enhance_data_refs_alignment): Adjust function calls. + (vect_analyze_data_refs_alignment): Likewise. + (vect_analyze_group_access): Fix printing. Skip different checks if + DR_STEP is 0. Keep strided stores either in loop or basic block + vectorization data structure. Fix indentation. + (vect_analyze_data_ref_access): Fix comments, allow zero step in + basic blocks. + (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data + dependence instances from either loop or basic block vectorization + info. + (vect_analyze_data_refs): Update comment. Call + compute_data_dependences_for_bb to analyze basic blocks. + (vect_create_addr_base_for_vector_ref): Check for outer loop only in + case of loop vectorization. In case of basic block vectorization use + data-ref itself as a base. + (vect_create_data_ref_ptr): In case of basic block vectorization: + don't advance the pointer, add new statements before the current + statement. Adjust function calls. + (vect_supportable_dr_alignment): Support only aligned accesses in + basic block vectorization. + * common.opt (ftree-slp-vectorize): New flag. + * tree-vect-patterns.c (widened_name_p): Adjust function calls. + (vect_pattern_recog_1): Likewise. + * tree-vect-stmts.c (process_use): Likewise. + (vect_init_vector): Add new statements in the beginning of the basic + block in case of basic block SLP. + (vect_get_vec_def_for_operand): Adjust function calls. + (vect_finish_stmt_generation): Likewise. + (vectorizable_call): Add assert that it is loop vectorization, adjust + function calls. + (vectorizable_conversion, vectorizable_assignment): Likewise. + (vectorizable_operation): In case of basic block SLP, take + vectorization factor from statement's type and skip the relevance + check. Adjust function calls. + (vectorizable_type_demotion): Add assert that it is loop + vectorization, adjust function calls. + (vectorizable_type_promotion): Likewise. + (vectorizable_store): Check for outer loop only in case of loop + vectorization. Adjust function calls. For basic blocks, skip the + relevance check and don't advance pointers. + (vectorizable_load): Likewise. + (vectorizable_condition): Add assert that it is loop vectorization, + adjust function calls. + (vect_analyze_stmt): Add argument. In case of basic block SLP, check + that it is not reduction, get vector type, call only supported + functions, skip loop specific parts. + (vect_transform_stmt): Check for outer loop only in case of loop + vectorization. + (new_stmt_vec_info): Add new argument and initialize bb_vinfo. + (vect_is_simple_use): Fix comment, add new argument, fix conditions + for external definition. + * passes.c (pass_slp_vectorize): New pass. + * tree-vect-slp.c (find_bb_location): New function. + (vect_get_and_check_slp_defs): Add argument, adjust function calls, + check for patterns only in loops. + (vect_build_slp_tree): Add argument, adjust function calls, fail in + case of multiple types in basic block SLP. + (vect_mark_slp_stmts_relevant): New function. + (vect_supported_load_permutation_p): Fix comment. + (vect_analyze_slp_instance): Add argument. In case of basic block + SLP, take vectorization factor from statement's type, check that + unrolling factor is 1. Adjust function call. Save SLP instance in + either loop or basic block vectorization structure. Return FALSE, + if SLP failed. + (vect_analyze_slp): Add argument. Get strided stores groups from + either loop or basic block vectorization structure. Return FALSE + if basic block SLP failed. + (new_bb_vec_info): New function. + (destroy_bb_vec_info, vect_slp_analyze_node_operations, + vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise. + (vect_schedule_slp): Add argument. Get SLP instances from either + loop or basic block vectorization structure. Set vectorization factor + to be 1 for basic block SLP. + (vect_slp_transform_bb): New function. + * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define. + +2009-05-23 Mark Mitchell + + * final.c (shorten_branches): Do not align labels for jump tables. + (final_scan_insn): Use JUMP_TABLE_DATA_P. + +2009-05-23 Eric Botcazou + + * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA. + Remove outdated reference to flow.c and fix nits. + * doc/gccint.texi: Tweak RTL description. + * doc/rtl.texi: Likewise. + +2009-05-23 Denis Chertykov + + * config/avr/avr.c: Change my email address. + * config/avr/avr.h: Likewise. + * config/avr/avr.md: Likewise. + * config/avr/avr-protos.h: Likewise. + * config/avr/libgcc.S: Likewise. + +2009-05-22 Trevor Smigiel + + * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove. + (spu_split_load, spu_split_store): Change return type to int. + (spu_split_convert): Declare. + * config/spu/predicates.md (spu_mem_operand): Remove. + (spu_mov_operand): Update. + (spu_dest_operand, shiftrt_operator, extend_operator): Define. + * config/spu/spu.c (regno_aligned_for_load): Remove. + (reg_aligned_for_addr, spu_expand_load): Define. + (spu_expand_extv): Reimplement and handle MEM. + (spu_expand_insv): Handle MEM. + (spu_sched_reorder): Handle insn's with length 0. + (spu_legitimate_address_p): Reimplement. + (store_with_one_insn_p): Return TRUE for any mode with size + larger than 16 bytes. + (address_needs_split): Define. + (spu_expand_mov): Call spu_split_load and spu_split_store for MEM + operands. + (spu_convert_move): Define. + (spu_split_load): Use spu_expand_load and change all MEM's to TImode. + (spu_split_store): Change all MEM's to TImode. + (spu_init_expanders): Preallocate registers that correspond to + LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with + mark_reg_pointer. + (spu_split_convert): Define. + * config/spu/spu.md (QHSI, QHSDI): New mode iterators. + (_move, _movdi, _movti): Update predicate and condition. + (load, store): Change to define_split. + (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to + extendti2. + (zero_extendqiti2, zero_extendhiti2, lshr3_imm): Define. + (lshr3, lshr3_imm, lshr3_re): Simplify to one + define_insn_and_split of lshr3. + (shrqbybi_, shrqby_): Simplify to define_expand. + (ashr3_imm): Define. + (extv, extzv, insv): Allow MEM operands. + (trunc_shr_ti, trunc_shr_tidi, shl_ext_ti, + shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi, + sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine. + (_spu_convert2): Change to define_insn_and_split and remove the + corresponding define_peephole2. + (stack_protect_set, stack_protect_test, stack_protect_test_si): + Change predicates to memory_operand. + +2009-05-22 Mark Mitchell + + * config/arm/thumb2.md: Add 16-bit multiply instructions. + +2009-05-21 Michael Meissner + + PR tree-optimization/40219 + * tree.c (iterative_hash_expr): Make sure the builtin function is + a normal builtin function and not a front end or back end builtin + before indexing into the built_in_decls array. + +2009-05-22 Richard Guenther + + PR middle-end/38964 + * alias.c (write_dependence_p): Do not use TBAA for answering + anti-dependence or output-dependence. + * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code. + (emit_pointer_definition): Remove. + (emit_alias_warning): Likewise. + (find_what_var_points_to): Remove TBAA pruning code. + (find_what_p_points_to): Likewise. Do not warn about strict-aliasing + violations. + (compute_points_to_sets): Remove code computing the set of + dereferenced pointers. + * tree-data-ref.c (dr_may_alias_p): Properly use the split + oracle for querying anti and output dependencies. + * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying + if TBAA may be applied. + (refs_anti_dependent_p): New function. + (refs_output_dependent_p): Likewise. + * tree-ssa-alias.h (refs_anti_dependent_p): Declare. + (refs_output_dependent_p): Likewise. + * doc/tree-ssa.texi (Memory model): New section. + * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove. + * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove. + * cfgexpand.c (expand_gimple_basic_block): Do not handle + GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR. + * expr.c (expand_expr_real_1): Likewise. + * gimple-low.c (lower_stmt): Likewise. + * gimple-pretty-print.c (dump_gimple_stmt): Likewise. + (dump_gimple_cdt): Remove. + * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE. + (gimple_size): Likewise. + (walk_gimple_op): Likewise. + (is_gimple_stmt): Likewise. + (walk_stmt_load_store_addr_ops): Likewise. + (gimple_build_cdt): Remove. + * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove. + * gimple.h (gimple_cdt_new_type): Remove. + (gimple_cdt_new_type_ptr): Likewise. + (gimple_cdt_set_new_type): Likewise. + (gimple_cdt_location): Likewise. + (gimple_cdt_location_ptr): Likewise. + (gimple_cdt_set_location): Likewise. + * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR. + * tree-cfg.c (remove_useless_stmts_1): Do not handle + GIMPLE_CHANGE_DYNAMIC_TYPE. + (verify_types_in_gimple_stmt): Likewise. + * tree-inline.c (estimate_num_insns): Likewise. + (expand_call_inline): Do not copy DECL_NO_TBAA_P. + (copy_decl_to_var): Likewise. + (copy_result_decl_to_var): Likewise. + * tree-pretty-print.c (dump_generic_node): Do not handle + CHANGE_DYNAMIC_TYPE_EXPR. + * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. + * tree-ssa-operands.c (get_expr_operands): Likewise. + * tree-ssa-structalias.c (struct variable_info): Remove + no_tbaa_pruning member. + (new_var_info): Do not set it based on DECL_NO_TBAA_P. + (unify_nodes): Do not copy it. + (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE. + (dump_solution_for_var): Do not dump no_tbaa_pruning state. + (set_uids_in_ptset): Do not check it. + (find_what_var_points_to): Likewise. + (compute_tbaa_pruning): Remove. + (compute_points_to_sets): Do not call it. + * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR. + * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove. + * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove. + (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise. + (DECL_NO_TBAA_P): Likewise. + (struct tree_decl_common): Move no_tbaa_flag to unused flags section. + * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P. + (expand_omp_atomic_pipeline): Do not set it. + * print-tree.c (print_node): Do not dump it. + * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove + redundant check. + +2009-05-22 Vladimir Makarov + + PR target/39856 + * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note + for clobber. + +2009-05-22 Mark Mitchell + + * tree.c (handle_dll_attribute): Mark dllexport'd inlines as + non-external. + 2009-05-22 Ben Elliston * Makefile.in (bversion.h, s-bversion): New targets. @@ -163,10 +1399,9 @@ (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64, *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear prefix_rex attribute. - * config/i386/predicates.md (ext_QIreg_operand, - const128_operand): New predicates. - (memory_displacement_only_operand): Always return 0 for - TARGET_64BIT. + * config/i386/predicates.md (ext_QIreg_operand, const128_operand): + New predicates. + (memory_displacement_only_operand): Always return 0 for TARGET_64BIT. 2009-05-21 Ramana Radhakrishnan @@ -233,8 +1468,7 @@ PR middle-end/40204 * fold-const.c (fold_binary) : Avoid infinite - recursion if build_int_cst_type returns the same INTEGER_CST as - arg1. + recursion if build_int_cst_type returns the same INTEGER_CST as arg1. 2009-05-20 Eric Botcazou @@ -285,18 +1519,17 @@ with mismatched comparison modes. 2009-05-20 Ramana Radhakrishnan - + * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM. - (peephole ior (reg, int) -> mov, ior): Refactored for only ARM. - * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic - with shifts for Thumb2. - (orsi_notsi): New for orn. - (*thumb_orsi_notshiftsi_si): Allow orn with shifts. - (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2. - * config/arm/arm.c (const_ok_for_op): Split case for IOR for - Thumb2. - (arm_gen_constant): Set can_invert for IOR and Thumb2, Add - comments. Don't invert remainder for IOR. + (peephole ior (reg, int) -> mov, ior): Refactored for only ARM. + * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic + with shifts for Thumb2. + (orsi_notsi): New for orn. + (*thumb_orsi_notshiftsi_si): Allow orn with shifts. + (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2. + * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2. + (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments. + Don't invert remainder for IOR. 2009-05-19 Zdenek Dvorak @@ -636,10 +1869,8 @@ * graphite.h (struct name_tree_d): Rename from struct name_tree. Change all uses. (struct sese_d): Rename from struct sese. Change all uses. - * omega.h (struct eqn_d): Rename from struct eqn. Change all - uses. - (struct omega_pb_d): Rename from struct omega_pb. Change all - uses. + * omega.h (struct eqn_d): Rename from struct eqn. Change all uses. + (struct omega_pb_d): Rename from struct omega_pb. Change all uses. * optabs.h (struct optab_d): Rename from struct optab. Change all uses. (struct convert_optab_d): Rename from struct convert_optab. @@ -670,8 +1901,7 @@ 2009-05-15 Manuel López-Ibáñez - * ira-conflicts.c (add_insn_allocno_copies): Fix wrong - conditional. + * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional. 2009-05-15 Kaveh R. Ghazi @@ -689,8 +1919,7 @@ 2009-05-15 Sandra Loosemore - * fold-const.c (fold_convert_const_real_from_real): Check for - overflow. + * fold-const.c (fold_convert_const_real_from_real): Check for overflow. 2009-05-15 H.J. Lu @@ -750,7 +1979,7 @@ (ipcp_estimate_growth, ipcp_insert_stage): Likewise. (ipcp_update_callgraph): Do not touch function bodies. * ipa-inline.c: Include except.h - MAX_TIME: New constant. + (MAX_TIME): New constant. (overall_insns): Remove (overall_size, max_benefit): New static variables. (cgraph_estimate_time_after_inlining): New function. @@ -820,7 +2049,7 @@ (ipcp_estimate_growth, ipcp_insert_stage): Likewise. (ipcp_update_callgraph): Do not touch function bodies. * ipa-inline.c: Include except.h - MAX_TIME: New constant. + (MAX_TIME): New constant. (overall_insns): Remove (overall_size, max_benefit): New static variables. (cgraph_estimate_time_after_inlining): New function. @@ -1052,10 +2281,8 @@ (TARGET_LEGITIMATE_ADDRESS_P): New. * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete. - * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): - Remove. - * config/iq2000/iq2000.c (iq2000_legitimate_address_p): - Make static. + * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove. + * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static. (TARGET_LEGITIMATE_ADDRESS_P): New. * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete. @@ -2087,8 +3314,7 @@ * config/arm/arm.c (arm_handle_fndecl_attribute, arm_handle_isr_attribute): Likewise. * config/avr/avr.c (avr_handle_progmem_attribute, - avr_handle_fndecl_attribute, avr_handle_fntype_attribute): - Likewise. + avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise. * config/bfin/bfin.c (handle_int_attribute, bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute, @@ -2100,8 +3326,7 @@ h8300_handle_eightbit_data_attribute, h8300_handle_tiny_data_attribute): Likewise. * config/i386/i386.c (ix86_handle_cconv_attribute, - ix86_handle_abi_attribute, ix86_handle_struct_attribute): - Likewise. + ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise. * config/i386/winnt.c (ix86_handle_shared_attribute, ix86_handle_selectany_attribute): Likewise. * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise. @@ -2130,8 +3355,7 @@ 2009-05-10 Joseph Myers - * pretty-print.h (struct pretty_print_info): Add - translate_identifiers. + * pretty-print.h (struct pretty_print_info): Add translate_identifiers. (pp_translate_identifiers): New. (pp_identifier): Only conditionally translate identifier to locale character set.