X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=965beac27c548e5d48264b302ba548b11af2f836;hp=522968000e3193388809793fca07b8066da03338;hb=b29d7d6e75f98eca4d31d30e477e43782f7605db;hpb=5aa8c5f0525b6822576e1e5266836c5f3bdf03d1 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 522968000e3..965beac27c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1192 @@ +2009-08-03 SUGIOKA Toshinobu + + * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename + __sync_compare_and_swap_* to __sync_val_compare_and_swap_*. + +2009-08-03 Richard Guenther + + * tree.c (make_vector_type): Build a main variant first, + get the canonical one and then build the variant. + * tree-ssa.c (useless_type_conversion_p_1): Handle + fixed-point types. + (useless_type_conversion_p): Conversions to pointers to + incomplete record types are useless. + +2009-08-03 Richard Guenther + + * tree-cfg.c (pass_warn_unused_result): Mark name that no dump + file will be created. + * omp-low.c (pass_diagnose_omp_blocks): Likewise. + * toplev.c (compile_file): Adjust comment. + +2009-08-03 Kaz Kojima + + * config/sh/sh-protos.h (sh_promote_function_mode): Remove. + * config/sh/sh.c (sh_promote_function_mode): Wrap long lines. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS): Remove. + (sh_promote_function_mode): Fix typo. + +2009-08-03 Andreas Krebbel + + * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as + possibly unused. + +2009-08-02 John David Anglin + + * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from + declaration arguments. + +2009-08-02 Uros Bizjak + + * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead + of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01). + (ix86_split_ashl): Ditto. + (ix86_expand_vector_init_one_nonzero): Ditto. + (ix86_expand_vector_set): Ditto. + (ix86_expand_reduc_v4sf): Ditto. + +2009-08-02 Paolo Bonzini + + * explow.c (promote_function_mode): Remove assert. + * config/sh/sh.c (sh_promote_function_mode): Declare. + +2009-08-01 John David Anglin + + * config/pa/pa.c (pa_promote_function_mode): Declare. + Change to static. Fix promote_mode call. + + * gthr-dce.h (CONST_CAST2): Define if not defined. + (__gthread_setspecific): Use CONST_CAST2 to fix warning. + + * config.gcc (hppa[12]*-*-hpux10*): Add stdint support. + +2009-08-01 Paolo Bonzini + + * expr.c (store_constructor): Use promote_decl_mode. Remove + now write-only variable unsignedp. + (expand_expr_real_1): Use promote_decl_mode. + * expr.h (promote_function_mode, promote_decl_mode): New. + (promote_mode): Remove last argument. + * function.c (assign_temp): Drop last argument of promote_mode. + (assign_parm_find_data_types): Use promote_function_mode. + (assign_parm_setup_reg): Likewise. + (expand_function_end): Use promote_function_mode. + * calls.c (initialize_argument_information): Use promote_function_mode. + (precompute_arguments): Use promote_mode instead of checking if + only PROMOTE_FUNCTION_MODE is defined. + (expand_call): When making sibcall decisions, use promote_function_mode. + Below, remove an if for targetm.calls.promote_function_return and + and use promote_function_mode. + (emit_library_call_value_1): Use promote_function_mode, fix bug + where promote_mode was passed FOR_CALL == 0 for a return value in an + assertion. + * cfgexpand.c (expand_one_register_var): Use promote_decl_mode. + * explow.c (promote_function_mode, promote_decl_mode): New. + (promote_mode): Keep only the FOR_CALL == 0 case. + * combine.c (setup_incoming_promotion): Remove test of + promote_function_args. Use promote_function_mode. + * stmt.c (expand_value_return): Use promote_decl_mode. + (expand_decl): Use promote_decl_mode. + + * expr.c (store_constructor): Use promote_decl_mode. Remove + now write-only variable unsignedp. + (expand_expr_real_1): Use promote_decl_mode. + * expr.h (promote_function_mode, promote_decl_mode): New. + (promote_mode): Remove last argument. + * function.c (assign_temp): Drop last argument of promote_mode. + (assign_parm_find_data_types): Use promote_function_mode. + (assign_parm_setup_reg): Likewise. + (expand_function_end): Use promote_function_mode. + * calls.c (initialize_argument_information): Use promote_function_mode. + (precompute_arguments): Use promote_mode instead of checking if + only PROMOTE_FUNCTION_MODE is defined. + (expand_call): When making sibcall decisions, use promote_function_mode. + Below, remove an if for targetm.calls.promote_function_return and + and use promote_function_mode. + (emit_library_call_value_1): Use promote_function_mode, fix bug + where promote_mode was passed FOR_CALL == 0 for a return value in an + assertion. + * cfgexpand.c (expand_one_register_var): Use promote_decl_mode. + * explow.c (promote_function_mode, promote_decl_mode): New. + (promote_mode): Keep only the FOR_CALL == 0 case. + * combine.c (setup_incoming_promotion): Remove test of + promote_function_args. Use promote_function_mode. + * stmt.c (expand_value_return): Use promote_decl_mode. + (expand_decl): Use promote_decl_mode. + + * explow.c (promote_function_mode): Just call the target hook. + * targhooks.c (default_promote_function_mode, + default_promote_function_mode_always_promote): New. + * targhooks.h (default_promote_function_mode, + default_promote_function_mode_always_promote): Declare. + * target.h (promote_function_args, promote_function_return): Remove. + (promote_function_mode): New. + * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS, + TARGET_PROMOTE_FUNCTION_RETURN): Remove. + (TARGET_PROMOTE_FUNCTION_MODE): New. + (TARGET_CALLS): Adjust. + * system.h (TARGET_PROMOTE_FUNCTION_ARGS, + TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison. + + * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move... + * config/s390/s390.c (s390_promote_function_mode): ... here, + with pointer handling. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove. + + * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move... + * config/sparc/sparc.c (sparc_promote_function_mode): ... here, + with pointer handling. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove. + + * config/sh/sh-protos.h (sh_promote_function_mode): New. + * config/sh/sh.c (sh_promote_function_mode): New. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove. + + * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move... + * config/cris/cris.c (cris_promote_function_mode): ... here. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS): Remove. + + * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move... + * config/mmix/mmix.c (mmix_promote_function_mode): ... here. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS): Remove. + + * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move... + * config/arm/arm.c (arm_promote_function_mode): ... here, without + complex type handling. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove. + + * config/pa/pa.c (pa_promote_function_mode): New. + (TARGET_PROMOTE_FUNCTION_MODE): Define. + (TARGET_PROMOTE_FUNCTION_RETURN): Remove. + + * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS, + TARGET_PROMOTE_FUNCTION_RETURN): Remove. + (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently. + * config/xtensa/xtensa.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/iq2000/iq2000.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/picochip/picochip.c: Likewise. + * config/arc/arc.c: Likewise. + * config/mcore/mcore.c: Likewise. + * config/score/score.c: Likewise. + * config/mips/mips.c: Likewise. + * config/bfin/bfin.c: Likewise. + * config/ia64/ia64.c: Likewise (disabled though). + + * config/frv/frv.h: Remove pointless remark. + + * doc/tm.texi (PROMOTE_FUNCTION_MODE, + TARGET_PROMOTE_FUNCTION_ARGS, + TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into... + (TARGET_PROMOTE_FUNCTION_MODE): ... this. + +2009-08-01 Sebastian Pop + + * doc/invoke.texi (-fgraphite-force-parallel): Renamed + -floop-parallelize-all. + * toplev.c (process_options): Rename flag_graphite_force_parallel to + flag_loop_parallelize_all. + * tree-ssa-loop.c (gate_graphite_transforms): Same. + * graphite.c (graphite_transform_loops): Same. + * common.opt: Same. + * graphite-poly.c (apply_poly_transforms): Same. + +2009-07-31 Richard Earnshaw + + PR tree-optimization/40914 + * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta, + if set, then check the delta field of the PMF record. + (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta. + (ipa_analyze_call_uses): Handle machines where the vbit for a PMF + call is stored in the delta. + +2009-07-31 Adam Nemet + + * config/mips/mips.md (*clear_upper32_dext): New pattern. + +2009-07-31 Uros Bizjak + + * config/i386/bsd.h (ASM_BYTE): New define. + * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP. + * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of + .byte. Use fputs or putc instead of fprintf where appropriate. + * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte. Use + fputs or putc instead of fprintf where appropriate. + * config/i386/i386elf.h: Ditto. + * config/i386/sysv4.h: Ditto. + + * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define. + * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte. + (*tls_global_dynamic_64): Ditto. + +2009-07-31 Christian Bruel + + * gcc/config.gcc (sh*-*-elf): test with_libgloss. + +2009-07-31 Ramana Radhakrishnan + + * config/arm/arm.c (arm_arm_address_cost): Fix typo. + Remove dead code for MINUS. + +2009-07-31 Anthony Green + + * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of + $r12 in prologue. + (moxie_expand_epilogue): Ditto for epilogue. + (moxie_setup_incoming_varargs): ABI change. Use 5 registers for + incoming arguments. + (moxie_function_arg): Ditto. + (moxie_pass_by_reference): Ditto. + (moxie_arg_partial_bytes): Ditto. + * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto. + (FUNCTION_ARG_ADVANCE) Ditto. + (REG_PARM_STACK_SPACE) Ditto. + (FUNCTION_ARG_REGNO_P) Dito. + + * config.gcc: Add moxie linux config support. + * gcc/config/moxie/uclinux.h: New file. + +2009-07-31 DJ Delorie + + * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New. + (UNSPECV_SP_SWITCH_E): New. + (sp_switch_1): Change to an unspec. + (sp_switch_2): Change to an unspec. Don't use post-inc when we + replace $r15. + * config/sh/sh.c (sh_expand_prologue): Use the constant pool to + reference the new stack's address + +2009-07-30 Sebastian Pop + + * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o, + graphite-clast-to-gimple.o, graphite-dependences.o, + graphite-interchange.o, graphite-poly.o, graphite-ppl.o, + graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o. + (graphite-blocking.o, + graphite-clast-to-gimple.o, graphite-dependences.o, + graphite-interchange.o, graphite-poly.o, graphite-ppl.o, + graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New. + * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false. + * cfgloop.h (struct loop): Add can_be_parallel field. + * common.opt (fgraphite-identity): Moved up. + (fgraphite-force-parallel): New flag. + * graphite.c: Rewrite. + * graphite.h: Rewrite. + * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM + after Graphite. + * toplev.c (graphite_out_file): New file descriptor. + (graphite_in_file): New. + (process_options): flag_graphite_force_parallel cannot be used without + Graphite. + * tree-ssa-loop.c: Include toplev.h. + (gate_graphite_transforms): Enable flag_graphite for + flag_graphite_force_parallel. + +2009-07-30 Sebastian Pop + + * ChangeLog.graphite: New. + * graphite-blocking.c: New. + * graphite-clast-to-gimple.c: New. + * graphite-clast-to-gimple.h: New. + * graphite-dependences.c: New. + * graphite-dependences.h: New. + * graphite-interchange.c: New. + * graphite-poly.c: New. + * graphite-poly.h: New. + * graphite-ppl.c: New. + * graphite-ppl.h: New. + * graphite-scop-detection.c: New. + * graphite-scop-detection.h: New. + * graphite-sese-to-poly.c: New. + * graphite-sese-to-poly.h: New. + * sese.c: New. + * sese.h: New. + +2009-07-30 Sebastian Pop + + * tree-chrec.c (evolution_function_right_is_integer_cst): New. + * tree-chrec.h (evolution_function_right_is_integer_cst): Declared. + +2009-07-30 Sebastian Pop + + * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR. + (scev_is_linear_expression): Return false if the evolution is not + affine multivariate. + +2009-07-30 Sebastian Pop + + * tree-data-ref.c (graphite_find_data_references_in_stmt): New. + * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared. + +2009-07-30 Sebastian Pop + + * tree-data-ref.c (debug_data_references): New. + (debug_data_reference): New. + * tree-data-ref.h (debug_data_references): Declared. + (debug_data_reference): Declared. + +2009-07-30 Sebastian Pop + + * tree-data-ref.c (stmt_simple_memref_p: Removed. + * tree-data-ref.h (scop_p): Removed. + (struct data_reference): Remove field scop. + (DR_SCOP): Removed. + (stmt_simple_memref_p): Removed. + +2009-07-30 Sebastian Pop + + * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument. + * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch + basic block empty. + +2009-07-30 Sebastian Pop + + * doc/invoke.texi (-fgraphite-force-parallel): Documented. + +2009-07-30 Sebastian Pop + + * doc/invoke.texi (-fgraphite-identity): Documented. + +2009-07-30 Sebastian Pop + + * tree-scalar-evolution.c: Fix comment. + (instantiate_scev_1): Return unknow from scev instantiation if the + result is not above instantiate_below. + +2009-07-30 Sebastian Pop + + * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not + static anymore. Instantiate the symbols that may have been introduced + by chrec_apply. + * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop): + Declared. + +2009-07-30 DJ Delorie + + * config/mep/mep.c (mep_asm_init_sections): Add section flags and + .vliw directive to VLIW sections. + +2009-07-30 Ralf Wildenhues + + * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps): + New variables. + ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules. + (AUTOHEADER): New variable. + ($(srcdir)/cstamp-h.in): Use it. + +2009-07-30 Michael Meissner + Pat Haugen + Revital Eres + + * config/rs6000/vector.md (VEC_F): Add VSX support. + (VEC_A): Ditto. + (VEC_N): Ditto. + (mov): Ditto. + (vector_load_): Ditto. + (vector_store_): Ditto. + (vector GPR move split): Ditto. + (vec_reload_and_plus_): Ditto. + (vec_reload_and_reg_): Ditto. + (add3): Ditto. + (sub3): Ditto. + (mul3): Ditto. + (neg2): Ditto. + (abs2): Ditto. + (smin3): Ditto. + (smax3): Ditto. + (vector_eq): Ditto. + (vector_gt): Ditto. + (vector_ge): Ditto. + (vector_gtu): Ditto. + (vector_select__uns): Ditto. + (vector_eq__p): Ditto. + (vector_gt__p): Ditto. + (vector_ge__p): Ditto. + (vector_gtu__p): Ditto. + (cr6_test_for_zero): Ditto. + (cr6_test_for_zero_reverse): Ditto. + (cr6_test_for_lt): Ditto. + (cr6_test_for_lt_reverse): Ditto. + (xor3): Ditto. + (ior3): Ditto. + (and3): Ditto. + (one_cmpl2): Ditto. + (nor2): Ditto. + (andc2): Ditto. + (float2): Ditto. + (unsigned_float2): Ditto. + (fix_trunc2): Ditto. + (fixuns_trunc2): Ditto. + (vec_init): + (vec_set): Ditto. + (vec_extract): Ditto. + (vec_interleave_highv4sf): Ditto. + (vec_interleave_lowv4sf): Ditto. + (vec_realign_load_): Ditto. + (vec_shl_): Ditto. + (vec_shr_): Ditto. + (div3): New patterns for VSX. + (vec_interleave_highv2df): Ditto. + (vec_interleave_lowv2df): Ditto. + (vec_pack_trunc_v2df): Ditto. + (vec_pack_sfix_trunc_v2df): Ditto. + (vec_pack_ufix_trunc_v2df): Ditto. + (vec_unpacks_hi_v4sf): Ditto. + (vec_unpacks_lo_v4sf): Ditto. + (vec_unpacks_float_hi_v4si): Ditto. + (vec_unpacku_float_lo_v4si): Ditto. + (vec_unpacku_float_hi_v4si): Ditto. + (vec_unpacks_float_lo_v4si): Ditto. + (movmisalign): Ditto. + (vector_ceil2): New patterns for vectorizing math library. + (vector_floor2): Ditto. + (vector_btrunc2): Ditto. + (vector_copysign3): Ditto. + + * config/rs6000/predicates.md (easy_vector_constant_msb): New + predicate for setting the high bit in each word, used for copysign. + + * config/rs6000/ppc-asm.h (f19): Whitespace. + (f32-f63): Define if VSX. + (v0-v31): Define if Altivec. + (vs0-vs63): Define if VSX. + + * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md. + + * config/rs6000/power7.md: New file, provide tuning parameters for + -mcpu=power7. + + * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support. + (rs6000_cpu_cpp_builtins): Ditto. + (altivec_overloaded_builtins): Ditto. + (altivec_resolve_overloaded_builtin): Ditto. + + * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new + debug switch to disable vectorizing simple math builtin + functions. + + * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function): + Vectorize simple math builtin functions. + (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target + hook to vectorize math builtins. + (rs6000_override_options): Enable -mvsx on -mcpu=power7. + (rs6000_builtin_conversion): Add VSX/power7 support. + (rs6000_builtin_vec_perm): Ditto. + (vsplits_constant): Add support for loading up a vector constant + with just the high bit set in each part. + (rs6000_expand_vector_init): Add VSX/power7 support. + (rs6000_expand_vector_set): Ditto. + (rs6000_expand_vector_extract): Ditto. + (rs6000_emit_move): Ditto. + (bdesc_3arg): Ditto. + (bdesc_2arg): Ditto. + (bdesc_1arg): Ditto. + (rs6000_expand_ternop_builtin): Ditto. + (altivec_expand_builtin): Ditto. + (rs6000_expand_unop_builtin): Ditto. + (rs6000_init_builtins): Ditto. + (altivec_init_builtins): Ditto. + (builtin_function_type): Ditto. + (rs6000_common_init_builtins): Ditto. + (rs6000_handle_altivec_attribute); Ditto. + (rs6000_mangle_type): Ditto. + (rs6000_vector_mode_supported_p): Ditto. + (rs6000_mode_dependent_address): Altivec addresses with AND -16 + are mode dependent. + + * config/rs6000/vsx.md: New file for VSX support. + + * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for + identifing values with just the most significant bit set. + (enum rs6000_builtins): Add builtins for VSX. Add simple math + vectorized builtins. + + * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete. + (UNSPEC_VRFIM): Delete. + (splitter for loading up vector with most significant bit): New + splitter for vectorizing copysign. + (altivec_vrfiz): Rename from altivec_fturncv4sf2. Add support for + vectorizing simple math functions. + (altivec_vrfip): Add support for vectorizing simple math functions. + (altivec_vrfim): Ditto. + (altivec_copysign_v4sf3): New insn for Altivec copysign support. + + * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant. + (power7.md, vsx.md): Include for power7 support. + (copysigndf3): Use VSX instructions if -mvsx. + (negdf2_fpr): Ditto. + (absdf2_fpr): Ditto. + (nabsdf2_fpr): Ditto. + (adddf3_fpr): Ditto. + (subdf3_fpr): Ditto. + (muldf3_fpr): Ditto. + (divdf3_fpr): Ditto. + (fix_truncdfdi2_fpr): Ditto. + (cmpdf_internal1): Ditto. + (fred, fred_fpr): Convert into expander/insn to add VSX support. + (btruncdf2, btruncdf2_fpr): Ditto. + (ceildf2, ceildf2_fpr): Ditto. + (floordf2, floordf2_fpr): Ditto. + (floatdidf2, floatdidf2_fpr): Ditto. + (fmadddf4_fpr): Name insn. Use VSX instructions if -mvsx. + (fmsubdf4_fpr): Ditto. + (fnmadddf4_fpr_1): Ditto. + (fnmadddf4_fpr_2): Ditto. + (fnmsubdf4_fpr_1): Ditto. + (fnmsubdf4_fpr_2): Ditto. + (fixuns_truncdfdi2): Add expander for VSX support. + (fix_truncdfdi2): Ditto. + (fix_truncdfsi2): Ditto. + (ftruncdf2): Ditto. + (btruncsf2): Whitespace. + (movdf_hardfloat32): Add support for VSX registers. + (movdf_softfloat32): Ditto. + (movdf_hardfloat64): Ditto. + (movdf_hardfloat64_mfpgpr): Ditto. + (movdf_softfloat64): Ditto. + (movti splitters): Add check for vector registers supporting + TImode in the future. + (bpermd): Add power7 bpermd instruction. + + * config/rs6000/altivec.h (vec_div): Define if VSX. + (vec_mul): Ditto. + (vec_msub): Ditto. + (vec_nmadd): Ditto. + (vec_nearbyint): Ditto. + (vec_rint): Ditto. + (vec_sqrt): Ditto. + (all predicates): Use the generic builtin function, and not the V4SF + specific function so that the predicates will work with VSX's V2DF. + (vec_all_*): Ditto. + (vec_any_*): Ditto. + + * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions): + Document new VSX functions and types. + + * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx + switches. + + * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws", + "wa", and "j" constraints. Modify "v" to talk about Altivec + instead of just vector. + +2009-07-30 Andrew MacLeod + + PR debug/26475 + * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set + location for phi arguments. + (rewrite_update_phi_arguments): Find locations for reaching defs. + * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis): + Add location to add_phi_arg calls. + * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations. + * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge, + split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations. + * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call, + create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations. + * tree.h (struct phi_arg_d): Add location_t to PHI arguments. + * tree-phinodes.c (make_phi_node): Initialize location. + (resize_phi_node): Initialize location to UNKNOWN_LOCATION. + (add_phi_arg): Add location parameter. + (remove_phi_arg_num): Move location when moving phi argument. + * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set + location. + * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop, + slpeel_update_phi_nodes_for_guard1, + slpeel_update_phi_nodes_for_guard2, + slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations, + vect_loop_versioning): Set locations. + * tree-parloops.c (create_phi_for_local_result, + transform_to_exit_first_loop, create_parallel_loop): Add locations. + * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present. + * tree-vect-loop.c (get_initial_def_for_induction, + vect_create_epilog_for_reduction, vect_finalize_reduction): Add + locations. + * tree-flow-inline.h (gimple_phi_arg_location): New. Return locus. + (gimple_phi_arg_location_from_edge): New. Return locus from an edge. + (gimple_phi_arg_set_location): New. Set locus. + (gimple_phi_arg_has_location): New. Check for locus. + (redirect_edge_var_map_location): New. Return locus from var_map. + * tree-vect-data-refs.c (vect_setup_realignment): Set location. + * tree-ssa-phiopt.c (conditional_replacement): Set locus when + combining PHI arguments. + (cond_store_replacement): Set location. + * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible. + * grpahite.c (add_loop_exit_phis, add_guard_exit_phis, + scop_add_exit_phis_edge): Add locations. + * tree-cfgcleanup.c (remove_forwarder_block, + remove_forwarder_block_with_phi): Add locations. + * tree-ssa-pre.c (insert_into_preds_of_block): Add locations. + * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add + locations. + * tree-ssa-dce.c (forward_edge_to_pdom): Add locations. + * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge, + flush_pending_stmts): Add source location. + * lambda-code.c (perfect_nestify): Maintain location stack with argument + stack to preserve locations. + * tree-vect-stmts.c (vectorizable_load): Add location. + * tree-inline.c (copy_phis_for_bb): Copy locus. + (setup_one_parameter): Add call locus to inlined parameter stmts. + (initialize_inlined_parameters): Pass in call location as parameter + assignment locus. + (tree_function_versioning): Pass location to setup_one_parameter. + * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations. + * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for + copy and edge lists. + (insert_partition_copy_on_edge, insert_value_copy_on_edge, + insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a + locus parameter and override the stmt default if provided. + (new_elim_graph, clear_elim_graph, delete_elim_graph, + elim_graph_add_edge, elim_graph_remove_succ_edge, + FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build, + elim_forward, elim_unvisited_predecessor, elim_backward, elim_create, + eliminate_phi): Add locus info in elimination graph for each edge and + value copy. + (insert_backedge_copies): Copy locus if present. + * tree-flow.h (struct _edge_var_map): Add locus field. + * tree-switch_conversions.c (fix_phi_nodes): Add locations. + * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block, + add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add + locations. + * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations. + +2009-07-30 Martin Jambor + + PR tree-optimization/40570 + * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single + use inlining loops. + +2009-07-30 Razya Ladelsky + + * ssa-loop-manip.c: Include langhooks.h. + (rewrite_phi_with_iv): New. + (rewrite_all_phi_nodes_with_iv): New. + (canonicalize_loop_ivs): Move here from tree-parloops.c. + Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv. + * tree-parloops.c (loop_parallel_p): Move out all conditions + except dependency check. + (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c. + (gen_parallel_loop): Call canonicalize_loop_ivs without + reduction_list argument. + (build_new_reduction): New. + (gather_scalar_reductions): New. + (try_get_loop_niter): New. + (try_create_reduction_list): New. + (parallleize_loops): Change the parallel conditions check. + * tree-flow.h (canonicalize_loop_ivs): Remove one argument. + * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency. + +2009-07-30 Dave Korn + + * opt-functions.awk (opt_args): Allow argument to be enclosed in + curly braces. + * doc/options.texi (Option properties): Mention new quoting syntax. + +2009-07-29 Douglas B Rupp + + * config/alpha/alpha.c (alpha_start_function): + Handle VMS_DEBUG_MAIN_POINTER + * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro. + * doc/invoke.texi: Document -mdebug-main switch. + +2009-07-29 Richard Henderson + + * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy. + (cgraph_create_edge_including_clones): Likewise. + * tree-inline.c (copy_bb): Operate on the correct edges + when updating the callgraph. + +2009-07-29 Douglas B Rupp + + * config/alpha/vms-cc.c: Deleted. + * config/alpha/vms-ld.c: Deleted. + * config/alpha/t-vms64: Moved to config/vms + * config/alpha/vms-crt0-64.c: Moved to config/vms + * config/alpha/vms-crt0.c: Moved to config/vms + * config/alpha/vms-psxcrt0-64.c: Moved to config/vms + * config/alpha/vms-psxcrt0.c: Moved to config/vms + * config/alpha/xm-vms.h: Moved to config/vms + * config/alpha/x-vms: Moved to config/vms + * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file + config/vms/t-vms. + * config/vms/t-vms: Moved here from config/alpha. Alpha specific + parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set. + (version): Set. + * config/vms/t-vms64: Moved here from config/alpha + * config/vms/vms-crt0-64.c: Moved here from config/alpha. + (argc,argv,envp): Enforce 32bit malloc'ing. + * config/vms/vms-psxcrt0-64.c: Likewise. + * config/vms/vms-crt0.c: Moved here from config/alpha. + * config/vms/vms-psxcrt0.c: Likewise. + * config/vms/vms-crtl-64.h: New file. + * config/vms/vms-crtl.h: New file. + * config/vms/vms.opt: New file. + * config/vms/xm-vms64.h: New file. + * config/vms/xm-vms.h: Moved here from config/alpha. + (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR): + Set. + * config/vms/x-vms: Moved here from config/alpha. + (version, VMS_EXTRA_PARTS): Moved to t-vms. + (vms-ld.o, vms-cc.o): Removed. + (LN, LN_S, USE_COLLECT2, POD2MAN): Set. + +2009-07-29 Douglas B Rupp + + * dwarf2out.c (add_name_and_src_coords_attributes): Push on the + correct stack (obvious VMS fix). + +2009-07-29 Douglas B Rupp + + * dwarf2out.c (output_file_names): Output VMS style file name, size, + date, version info if VMS_DEBUGGING_INFO defined. + * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name, + size, date calculating code moved here. + +2009-07-29 Paul Brook + + * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and + do_push/do_pop. + +2009-07-29 Uros Bizjak + + PR target/40577 + * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src + to DImode when generating insq_le insn. + +2009-07-28 Douglas B Rupp + + * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET): + New macro set for VMS_DEBUGGGING_INFO. + (AT_string_form): Use it. + +2009-07-28 DJ Delorie + + * config/mep/mep.c (vtext_section): New. + (vftext_section): New. + (ftext_section): New. + (mep_select_section): Add support for functions. + (mep_unique_section): Likewise. + (mep_asm_init_sections): Likewise. + (mep_encode_section_info): Remove it from here. + + * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define. + +2009-07-28 Paolo Bonzini + + * tree.h (TREE_DEPRECATED): Document it is used for types too. + (TYPE_VECTOR_OPAQUE): Use default_def_flag + +2009-07-28 Douglas B Rupp + + * dwarf2out.c (output_file_names): Test new macro + DWARF2_DIR_SHOULD_END_WITH_SEPARATOR. + (add_comp_dir_attribute): Likewise. + +2009-07-28 Kai Tietz + + * config/i386/mingw-w64.h (LINK_SPEC): Add + separating space between commands. + +2009-07-28 Jan Hubicka + + PR tree-optimization/40759 + * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses + for renaming. + +2009-07-27 DJ Delorie + + * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit + types are dword-aligned. + (mep_expand_va_start): Likewise. + +2009-07-27 Olivier Hainque + Douglas B Rupp + + * convert.c (convert_to_pointer): Don't assume the target + pointer type is POINTER_SIZE long. Fetch its precision instead. + +2009-07-27 Douglas B Rupp + + * system.h (fopen): Undefine if macro. + +2009-07-27 Jakub Jelinek + + * dwarf2out.c (output_cfi_p): Removed. + (output_cfis): New function. + (output_fde): New function, split from output_call_frame_info. + (output_call_frame_info): Use it. + (dwarf2out_switch_text_section): Use output_cfis. + +2009-07-24 Kai Tietz + + * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when + TARGET_BI_ARCH is specified without enabling SJLJ. + * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT, + if TARGET_64BIT and TARGET_BI_ARCH aren't defined. + +2009-07-26 Mikael Pettersson + + * arm.md (negdi2): Use DImode if forcing a value into a register. + +2009-07-26 Ira Rosen + + PR tree-optimization/40801 + * tree-vect-stmts.c (vectorizable_call): Get previous copy + of vector operand from the previous copy of vector statement. + Pass the correct definition type value to + vect_get_vec_def_for_stmt_copy(). + +2009-07-25 John David Anglin + + * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to + const char ** conversion. + +2009-07-25 David Daney + + * system.h (gcc_assert): Invoke __builtin_unreachable() instead of + fancy_abort() if !ENABLE_ASSERT_CHECKING. + (gcc_unreachable): Invoke __builtin_unreachable() if + !ENABLE_ASSERT_CHECKING. + +2009-07-25 David Daney + + PR rtl-optimization/40445 + * emit-rtl.c (next_nonnote_insn_bb): New function. + * rtl.h (next_nonnote_insn_bb): Declare new function. + * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block + with no successors that is the successor of the ENTRY_BLOCK. + Continue from the top after removing an empty fallthrough block. + * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead + of next_nonnote_insn. + +2009-07-25 David Daney + + * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks. + +2009-07-25 Martin Jambor + + * c-common.c (c_common_attribute_table): New element for noclone. + (handle_noclone_attribute): New function. Forward-declare. + * tree-inline.c (tree_versionable_function_p): Check for noclone + attribute. + * doc/extend.texi (Labels as Values): Document need for noclone. + (Function Attributes): Document noclone attribute. + +2009-07-25 Jakub Jelinek + + PR rtl-optimization/34999 + * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi + and dw_fde_switched_cold_to_hot fields. + (output_cfi_p): New function. + (output_call_frame_info): If fde->dw_fde_switched_sections, + output 2 FDEs instead of one with corrupted header. + (dwarf2out_do_cfi_startproc): New function. + (dwarf2out_begin_prologue): Use it. Initialize fde->dw_fde_switch_cfi + and fde->dw_fde_switched_cold_to_hot. + (dwarf2out_switch_text_section): Compute + fde->dw_fde_switched_cold_to_hot. Switch to new text section here. + If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call + dwarf2out_do_cfi_startproc plus emit again currently active CFI insns. + Otherwise, compute fde->dw_fde_switch_cfi. + +2009-07-24 Cary Coutant + + * tree-cfg.c (assign_discriminator): Add explicit parentheses. + +2009-07-24 Cary Coutant + + * cfghooks.c (split_block): Copy discriminator to new block. + * tree-cfg.c (assign_discriminator): Check location of last + instruction in block as well as first. + +2009-07-24 Uros Bizjak + + * config/i386/linux.c: Use fputs or putc instead of fprintf + where appropriate. + * config/i386/gas.h: Ditto. + * config/i386/x86-64.h: Ditto. + * config/i386/att.h: Ditto. + +2009-07-24 Andreas Krebbel + + * expmed.c (emit_store_flag): Use a recursive call to optimize the + xor case. + +2009-07-24 Martin Jambor + + * ipa-prop.h (struct ipa_node_params): New flag node_enqued. + (ipa_push_func_to_list_1): Declare. + (ipa_push_func_to_list): New function. + + * ipa-prop.c (ipa_push_func_to_list_1): New function. + (ipa_init_func_list): Call ipa_push_func_to_list_1. + (ipa_push_func_to_list): Removed. + (ipa_pop_func_from_list): Clear node_enqueued flag. + +2009-07-24 Andreas Krebbel + + * config/s390/s390.c (override_options): Default + max-unrolled-insns to 100 for z10 tuning. + +2009-07-24 Tobias Grosser + + * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o + tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o, + tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o, + tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o, + tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o + tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o, + lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H. + +2009-07-24 Kai Tietz + + * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and + use default set in mingw32.h header. + * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and + 64-bit /mingw/include path. + (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib + path. + +2009-07-23 Neil Vachharajani + + PR rtl-optimization/40209 + * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem. + +2009-07-23 Uros Bizjak + + * config/i386/i386.c: Use ASM_LONG instead of .long. Concatenate + ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings + with the rest of string where appropriate. Use fputs or putc + instead of fprintf where appropriate. + +2009-07-22 Michael Meissner + Pat Haugen + Revital Eres + + * config/rs6000/vector.md: New file. Move most of the vector + expander support here from altivec.md to allow for the VSX vector + unit in the future. Add support for secondary_reload patterns. + Rewrite the patterns for vector comparison, and vector comparison + predicate instructions so that the RTL expresses the desired + behavior, instead of using unspec. + + * config/rs6000/constraints.md ("f" constraint): Use + rs6000_constraints to hold the precalculated register class. + ("d" constraint): Ditto. + ("wd" constraint): New constraint for VSX. + ("wf" constraint): Ditto. + ("ws" constraint): Ditto. + ("wa" constraint): Ditto. + ("wZ" constraint): Ditto. + ("j" constraint): Ditto. + + * config/rs6000/predicates.md (vsx_register_operand): New + predicate for VSX. + (vfloat_operand): New predicate for vector.md. + (vint_operand): Ditto. + (vlogical_operand): Ditto. + (easy_fp_constant): If VSX, 0.0 is an easy constant. + (easy_vector_constant): Add VSX support. + (altivec_indexed_or_indirect_operand): New predicate for + recognizing Altivec style memory references with AND -16. + + * config/rs6000/rs6000.c (rs6000_vector_reload): New static global + for vector secondary reload support. + (rs6000_vector_reg_class): Delete, replacing it with + rs6000_constraints. + (rs6000_vsx_reg_class): Ditto. + (rs6000_constraints): New array to hold the register classes of + each of the register constraints that can vary at runtime. + (builtin_mode_to_type): New static array for builtin function type + creation. + (builtin_hash_table): New static hash table for builtin function + type creation. + (TARGET_SECONDARY_RELOAD): Define target hook. + (TARGET_IRA_COVER_CLASSES): Ditto. + (rs6000_hard_regno_nregs_internal): If -mvsx, floating point + registers are 128 bits if VSX memory reference instructions are used. + (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory + unit is being used. + (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global. + (rs6000_debug_reg_global): Move -mdebug=reg statements here. + Print several of the scheduling related parameters. + (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in + rs6000_constraints instead of rs6000_vector_reg_class. Move + -mdebug=reg code to rs6000_debug_reg_global. Add support for + -mvsx-align-128 debug switch. Drop testing float_p if VSX or + Altivec. Add VSX support. Setup for secondary reload support on + Altivec/VSX registers. + (rs6000_override_options): Make power7 set the scheduling groups + like the power5. Add support for new debug switches to override + the scheduling defaults. Temporarily disable -mcpu=power7 from + setting -mvsx. Add support for debug switches -malways-hint, + -msched-groups, and -malign-branch-targets. + (rs6000_buitlin_conversion): Add support for returning unsigned + vector conversion functions to fix regressions due to stricter + type checking. + (rs6000_builtin_mul_widen_even): Ditto. + (rs6000_builtin_mul_widen_odd): Ditto. + (rs6000_builtin_vec_perm): Ditto. + (rs6000_vec_const_move): On VSX, use xxlxor to clear register. + (rs6000_expand_vector_init): Initial VSX support for using xxlxor + to zero a register. + (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is + generated upstream. + (bdesc_3arg): Add builtins for unsigned types. Add builtins for + VSX types for bit operations. Changes to accomidate vector.md. + (bdesc_2arg): Ditto. + (bdesc_1arg): Ditto. + (struct builtin_description_predicates): Rewrite predicate + handling so that RTL describes the operation, instead of passing + the instruction to be used as a string argument. + (bdesc_altivec_preds): Ditto. + (altivec_expand_predicate_builtin): Ditto. + (altivec_expand_builtin): Ditto. + (rs6000_expand_ternop_builtin): Use a switch instead of an if + statement for vsldoi support. + (altivec_expand_ld_builtin): Change to use new names from vector.md. + (altivec_expand_st_builtin): Ditto. + (paired_expand_builtin): Whitespace changes. + (rs6000_init_builtins): Add V2DF/V2DI types. Initialize the + builtin_mode_to_type table for secondary reload. Call + builtin_function_type to build random builtin functions. + (altivec_init_builtins): Change to use builtin_function_type to + create builtin function types dynamically as we need them. + (builtin_hash_function): New support for hashing the tree types + for builtin function as we need it, rather than trying to build + all of the trees that we need. Add initial preliminary VSX support. + (builtin_function_type): Ditto. + (builtin_function_eq): Ditto. + (builtin_hash_struct): Ditto. + (rs6000_init_builtins): Ditto. + (rs6000_common_init_builtins): Ditto. + (altivec_init_builtins): Ditto. + (rs6000_common_init_builtins): Ditto. + (enum reload_reg_type): New enum for simplifing reg classes. + (rs6000_reload_register_type): Simplify register classes into GPR, + Vector, and other registers. Altivec and VSX addresses in reload. + (rs6000_secondary_reload_inner): Ditto. + (rs6000_ira_cover_classes): New target hook, that returns the + appropriate cover classes, based on -mvsx being used or not. + (rs6000_secondary_reload_class): Add VSX support. + (get_vec_cmp_insn): Delete, rewrite vector conditionals. + (get_vsel_insn): Ditto. + (rs6000_emit_vector_compare): Rewrite vector conditional support + so that where we can, we use RTL operators, instead of blindly use + UNSPEC. + (rs6000_emit_vector_select): Ditto. + (rs6000_emit_vector_cond_expr): Ditto. + (rs6000_emit_minmax): Directly generate min/max under altivec, vsx. + (create_TOC_reference): Add -mdebug=addr support. + (emit_frame_save): VSX loads/stores need register indexed addressing. + + * config/rs6000/rs6000.md: Include vector.md. + + * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md. + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + support for V2DI, V2DF in logical, permute, select operations. + + * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug + switch for vsx/power7. + (-mvsx-scalar-memory): Ditto. + (-mvsx-align-128): Ditto. + (-mallow-movmisalign): Ditto. + (-mallow-df-permute): Ditto. + (-msched-groups): Ditto. + (-malways-hint): Ditto. + (-malign-branch-targets): Ditto. + + * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target + hook instead. + (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx. + (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx. + (rs6000_vector_reg_class): Delete. + (rs6000_vsx_reg_class): Ditto. + (enum rs6000_reg_class_enum): New enum for the constraints that + vary based on target switches. + (rs6000_constraints): New array to hold the register class for all + of the register constraints that vary based on the switches used. + (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions. + (enum rs6000_builtins): Add unsigned varients for the builtin + declarations returned by target hooks for expanding multiplies, + select, and permute operations. Add VSX builtins. + (enum rs6000_builtin_type_index): Add entries for VSX. + (V2DI_type_node): Ditto. + (V2DF_type_node): Ditto. + (unsigned_V2DI_type_node): Ditto. + (bool_long_type_node): Ditto. + (intDI_type_internal_node): Ditto. + (uintDI_type_internal_node): Ditto. + (double_type_internal_node): Ditto. + + * config/rs6000/altivec.md (whole file): Move all expanders to + vector.md from altivec.md. Rename insn matching functions to be + altivec_foo. + (UNSPEC_VCMP*): Delete, rewrite vector comparisons. + (altivec_vcmp*): Ditto. + (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm. + (VM): New iterator for moves that includes the VSX types. + (altivec_vperm_): Add VSX types. Add unsigned types. + (altivec_vperm__uns): New, for unsigned types. + (altivec_vsel_*): Rewrite vector comparisons and predicate builtins. + (altivec_eq): Ditto. + (altivec_gt): Ditto. + (altivec_gtu): Ditto. + (altivec_eqv4sf): Ditto. + (altivec_gev4sf): Ditto. + (altivec_gtv4sf): Ditto. + (altivec_vcmpbfp_p): Ditto. + +2009-07-23 Richard Earnshaw + + * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to + unsigned HWI. + +2009-07-23 Uros Bizjak + + PR target/40832 + * config/i386/i386.c (output_387_ffreep): Rewrite to use + ASM_SHORT instead of .word. + * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT + instead of .word in asm template. + +2009-07-22 Vladimir Makarov + + PR target/37488 + * ira-lives.c (bb_has_abnormal_call_pred): New function. + (process_bb_node_lives): Use it. + + * ira.c (setup_cover_and_important_classes): Don't setup + ira_important_class_nums. Add cover classes to the end of + important classes. + (cover_class_order, comp_reg_classes_func, reorder_important_classes): + New. + (find_reg_class_closure): Use reorder_important_classes. + + * config/i386/i386.h (IRA_COVER_CLASSES): Remove. + + * config/i386/i386.c (i386_ira_cover_classes): New function. + (TARGET_IRA_COVER_CLASSES): Redefine. + + * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about + importance of order of cover classes in the array. + +2009-07-22 Diego Novillo + + * tree-pass.h (TDF_EH): Define. + * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS + contains TDF_EH, print the EH region number holding GS. + * tree-dump.c (dump_options): Add "eh". + * doc/invoke.texi: Document it. + 2009-07-22 Doug Kwan * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.