X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=19e47fc6aa0594520b53c114cd3e9f85c2170fbf;hp=7349b7787cddc046d3581a7a8ff64acf727c1cc3;hb=f7b38b18bab44ea175cc3d7365b1af209e50af1f;hpb=5bfe6313be46eb5f3355345dddb5df965cb28104 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7349b7787cd..19e47fc6aa0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,840 @@ +2007-04-21 Andrew Pinski + + * timevar.c (timevar_print): Change reference of --disable-checking to + --enable-checking=release. Also warn if assert checking is disabled. + +2007-04-21 Andrew Pinski + + PR C/30265 + * c-gimplifier.c (gimplify_compound_literal_expr): Mark the + decl as addressable if the compound literal was marked as + addressable. + Mark the decl as a gimple register if it is a complex or + vector decl and does not live in memory. + +2007-04-21 Andrew Pinski + + * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs. + (GENERIC_NEXT): New function macro. + (PHI_CHAIN): Use phi_node's new chain variable. + (tree_phi_node): Change tree_common to tree_base + and add the chain field. + * tree-phinodes.c (make_phi_node): Don't set + TREE_TYPE on the new node. + * c-decl.c (lang_tree_node): Use GENERIC_NEXT + instead of checking GIMPLE_TUPLE_P in chain_next. + * tree-vect-transform.c + (get_initial_def_for_induction): Look at + PHI_RESULT_TREE for the type of the phi node. + (update_vuses_to_preheader): Use PHI_CHAIN + instead of TREE_CHAIN on the phi node. + * tree-ssa-structalias.c (compute_points_to_sets): + Likewise. + (ipa_pta_execute): Likewise. + +2007-04-21 Richard Guenther + + PR middle-end/31136 + * fold-const.c (fold_unary): Call fold_convert_const on the + original tree. + +2007-04-21 Alexandre Oliva + + * gcse.c (store_killed_in_insn): Handle PARALLELs. + (store_killed_in_pat): New. + +2007-04-20 Richard Henderson + + PR target/31628 + * config/i386/i386.c (type_has_variadic_args_p): Look for any + TREE_LIST with a void_type_node value, not void_list_node exactly. + +2007-04-21 Douglas Gregor + + * doc/standards.texi: Re-arrange into language-specific + subsections. Add a C++ section, documenting which standards we + support. + +2007-04-21 Zdenek Dvorak + + * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex. + * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops. + +2007-04-20 Daniel Jacobowitz + + * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include + ecrti.o and crtbegin.o. + (LIB_DEFAULT_SPEC): Include -lc. + (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o. + +2007-04-20 Richard Henderson + + PR target/28623 + * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset + argument; update all callers. + (get_unaligned_offset): New. + * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use + get_unaligned_address, just pass on the address directly. + (unaligned_extendqidi): Use gen_lowpart instead of open-coding + the subreg in the helper patterns. + (unaligned_extendqidi_le): Use get_unaligned_offset. + (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise. + (unaligned_extendhidi_be): Likewise. + (unaligned_extendhidi): Tidy. + * config/alpha/alpha-protos.h: Update. + +2007-04-20 Richard Henderson + + * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove. + (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove. + * config/alpha/linux.h (CPP_SPEC): Undef before redefine. + * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS. + * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS. + (CPP_SPEC): Don't include %(cpp_subtarget). + * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC. + (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS. + * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly. + +2007-04-20 Jakub Jelinek + + * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED + for __builtin_ia32_cmpordss. + + PR tree-optimization/31632 + * fold-const.c (fold_binary): Use op0 and op1 instead of arg0 + and arg1 for optimizations of comparison against min/max values. + Fold arg0 to arg1's type for optimizations of comparison against + min+1 and max-1 values. + +2007-04-19 Bernd Schmidt + + * reload.c (combine_reloads): When trying to use a dying register, + check whether it's uninitialized and don't use if so. + +2007-04-19 Brooks Moses + + * fold-const.c: Remove prototypes for native_encode_expr and + native_interpret_expr. + (native_encode_expr): Make non-static. + (native_interpret_expr): Likewise. + * tree.h: Add prototypes for the above. + +2007-04-19 Joseph Myers + + * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2, + *mov_si_e500_subreg0, *mov_si_e500_subreg0_2, + *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2, + spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr, + tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr): + Add length attributes. + +2007-04-19 Janis Johnson + + * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined, + not that it is 1. + + * c-cppbuiltin.c (c_cpp_builtins): Remove definition of + __STDC_WANT_DEC_FP__. + +2007-04-19 Joseph Myers + + * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu* + for long double compatibility. + * configure: Regenerate. + +2007-04-19 Eric Botcazou + + PR rtl-optimization/29841 + * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional + trap instructions. + * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions + that may cause control flow transfer from being moved. + +2007-04-18 Jan Hubicka + + * fold-const.c (div_if_zero_remainder): Do signed divide for pointer + types. + +2007-04-18 Eric Christopher + + * config/rs6000/darwin.md (load_macho_picbase): Use link register + only. Update operands. + * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller. + * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from + link register to pic register. + +2007-04-18 Dirk Mueller + + PR diagnostic/31227 + * tree-vrp.c (search_for_addr_array): New. + (check_array_bounds): Suppress warning about + address taken of array refs if its not de-referenced. + +2007-04-18 Dorit Nuzman + + * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL. + * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux. + + * tree-vectorizer.h (NITERS_KNOWN_P): New. + * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P + instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info. + + * tree-vect-analyze.c (vect_determine_vectorization_factor): Add + dump print. + (vect_analyze_operations): Fix indenetation. Fix a comment. Fix a + print message. + (vect_analyze_scalar_cycles): Fix indentation. + (vect_enhance_data_refs_alignment): Fix check in case of peeling. + (vect_mark_relevant): Include phis in relevance analysis. + + * tree-vect-transform.c (vect_transform_loop): Add an assert. + +2007-04-18 Anatoly Sokolov + + * config/avr/avr.c (ptrreg_to_str): Replace error() with + output_operand_lossage(). + +2007-04-18 Dorit Nuzman + + * tree-vect-transform.c (get_initial_def_for_reduction): Clean away + the unused code for reduction without adjust-in-epilog to simplify the + function. + +2007-04-18 Wolfgang Gellerich + + * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant. + (S390_TDC_NEGATIVE_ZERO): New constant. + (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant. + (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant. + (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant. + (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant. + (S390_TDC_POSITIVE_INFINITY): New constant. + (S390_TDC_NEGATIVE_INFINITY): New constant. + (S390_TDC_POSITIVE_QUIET_NAN): New constant. + (S390_TDC_NEGATIVE_QUIET_NAN): New constant. + (S390_TDC_POSITIVE_SIGNALING_NAN): New constant. + (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant. + (S390_TDC_INFINITY): New constant. + * config/s390/s390.c (s390_canonicalize_comparison): Renamed + UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like + optimization for UNSPEC_CCZ_TO_INT. + * config/s390/s390.md ("*TDC_insn_"): New insn. + ("*ccz_to_int"): New insn. + ("isinf2"): New insn. + (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT. + (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT. + (UNSPEC_CCZ_TO_INT): New constant. + +2007-04-18 Richard Guenther + + PR tree-optimization/19431 + PR tree-optimization/21463 + * tree-pass.h (pass_phiprop): Declare. + * passes.c (init_optimization_passes): New phiprop pass. + * tree-ssa-forwprop.c (struct phiprop_d): New structure. + (phivn_valid_p): New helper function. + (phiprop_insert_phi): Likewise. + (propagate_with_phi): Likewise. + (tree_ssa_phiprop): New propagator propagating loads + through phi nodes if profitable. + +2007-04-18 Dorit Nuzman + + * tree-vect-analyze.c (process_use): New function. + (vect_mark_stmts_to_be_vectorized): Factor out code to process_use. + Check phis in all bbs. + * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant + assert. + +2007-04-18 Bernd Schmidt + + * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way + we use REG_EQUAL. + +2007-04-17 Anatoly Sokolov + + PR target/30483 + * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with + error(). + +2007-04-17 H.J. Lu + + * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand + on "0". + (sse_vmmulv4sf3): Likewise. + (sse2_vmaddv2df3): Likewise. + (sse2_vmmulv2df3): Likewise. + +2007-04-17 Zdenek Dvorak + + PR rtl-optimization/31360 + * cfgloopanal.c (target_small_cost, target_pres_cost): Removed. + (target_reg_cost): New. + (init_set_costs): Initialize target_reg_cost. Add comments + regarding the rationale of the costs. + (global_cost_for_size): Renamed to... + (estimate_reg_pressure_cost): ... and simplify. Decrease importance + of register pressure. + * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use + estimate_reg_pressure_cost. Add number of ivs. + (determine_set_costs): Dump target_reg_cost. + * loop-invariant.c (gain_for_invariant): Use + estimate_reg_pressure_cost. Removed n_inv_uses argument. + (best_gain_for_invariant, find_invariants_to_move): Remove + n_inv_uses. + * cfgloop.h (target_small_cost, target_pres_cost): Removed. + (target_reg_cost): Declare. + (global_cost_for_size): Declaration removed. + (estimate_reg_pressure_cost): Declare. + +2007-04-17 Peter Bergner + + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode + regnos into even/odd register pairs. + * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and + TDmode similar to the other floating point modes. + [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode. + * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New + define_expand's. + (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr, + nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's. + (movdd_hardfloat64): Use TARGET_MFPGPR. + +2007-04-17 Bernd Schmidt + + * reload1.c (delete_output_reload): Don't count output in n_inherited. + + Revert + 2005-01-05 Richard Henderson + PR rtl-opt/10692 + * reload1.c (do_input_reload): Restrict the optimization deleteing + a previous output reload to RELOAD_FOR_INPUT. + +2007-04-17 Dorit Nuzman + + * tree-vectorizer.h (stmt_vec_info_type): Add enum value + induc_vec_info_type. + (vectorizable_induction): New function declaration. + * tree-vect-transform.c (get_initial_def_for_induction): No need to + check if already vectorized. Find first place in BB where new stmts + can be inserted. Takes only one argument. + (vectorizable_induction): New function. + (vect_transform_stmt): Add case for induc_vec_info_type to call + vectorizable_induction. + (vect_transform_loop): Consider phis for vectorization. + * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify + condition. + (analyze_operations): Call vectorizable_induction when analyzing phis. + Fix comment. + (vect_mark_stmts_to_be_vectorized): Remove redundant checks. + (vect_mark_relevant): Include phis in relevance analysis. + (vect_mark_stmts_to_be_vectorize): Likewise. + * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts. + +2007-04-16 Lawrence Crowl + + * doc/invoke.texi (Debugging Options): Add documentation for the + -femit-struct-debug options -femit-struct-debug-baseonly, + -femit-struct-debug-reduced, and + -femit-struct-debug-detailed[=...]. + + * c-opts.c (c_common_handle_option): Add + OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced, + and OPT_femit_struct_debug_detailed_. + * c.opt: Add specifications for + -femit-struct-debug-baseonly, -femit-struct-debug-reduced, + and -femit-struct-debug-detailed[=...]. + * opts.c (set_struct_debug_option): Parse the + -femit-struct-debug-... options. + * opts.c (matches_main_base, main_input_basename, + main_input_baselength, base_of_path, matches_main_base): Add + variables and functions to compare header base name to compilation + unit base name. + * opts.c (should_emit_struct_debug): Add to determine to emit a + structure based on the option. + (dump_struct_debug) Also disabled function to debug this + function. + * opts.c (handle_options): Save the base name of the + compilation unit. + + * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define. + (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add. + This hook indicates if a type is generic. Set it by default + to "never generic". + * langhooks.h (struct lang_hooks_for_types): Add a new hook + to determine if a struct type is generic or not. + * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook. + * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook. + * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook + with live C++ hook. + + * flags.h (enum debug_info_usage): Add an enumeration to describe + a program's use of a structure type. + * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter + to indicate the program's usage of the type. Filter structs based + on the -femit-struct-debug-... specification. + (gen_type_die): Split into two routines, gen_type_die and + gen_type_die_with_usage. gen_type_die is now a wrapper + that assumes direct usage. + (gen_type_die_with_usage): Replace calls to gen_type_die + with gen_type_die_with_usage adding the program usage of + the referenced type. + (dwarf2out_imported_module_or_decl): Suppress struct debug + information using should_emit_struct_debug when appropriate. + +2007-04-16 Ian Lance Taylor + + PR tree-optimization/31522 + * tree-vrp.c (vr_phi_edge_counts): New static variable. + (vrp_initialize): Allocate vr_phi_edge_counts. + (vrp_visit_phi_node): Don't push to infinity if we saw a new + executable edge. Drop test for all constants. + (vrp_finalize): Free vrp_phi_edge_counts. + + * doc/cpp.texi (Common Predefined Macros): Clarify description of + __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__. + + * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer + predecessors at head rather than tail. + +2007-04-16 Matthias Klose + + * config/alpha/linux.h (CPP_SPEC): Define. + * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend. + +2007-04-16 Aldy Hernandez + + * function.h: Remove sequence_stack extern declaration. + +2007-04-16 Kazu Hirata + + * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on + TARGET_FIDOA. + (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is + defined. + +2007-04-16 Anatoly Sokolov + + * config/avr/avr.c (avr_arch_types): Rearranging array. + (enum avr_arch): Add. + (avr_mcu_types): Use avr_arch enumeration constants instead of + numbers. + * config/avr/avr.h (LINK_SPEC): Simplify. + +2007-04-16 Kazu Hirata + + * config/m68k/m68k.c (m68k_libcall_value, + m68k_function_value): Use macros for register names more. + + * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG + instead. + (M68K_REGNAME): Use A6_REG. + * config/m68k/m68k.md (FP_REG): Rename to A6_REG. + +2007-04-16 Maxim Kuvyrkov + + PR middle-end/28071 + * sched-int.h (struct deps): Split field 'pending_lists_length' into + 'pending_read_list_length' and 'pending_write_list_length'. Update + comment. + * sched-deps.c (add_insn_mem_dependence): Change signature. Update + to handle two length counters instead of one. Update all uses. + (flush_pending_lists, sched_analyze_1, init_deps): Update to handle + two length counters instead of one. + * sched-rgn.c (propagate_deps): Update to handle two length counters + instead of one. + +2007-04-16 H.J. Lu + + PR target/31582 + * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a + copy of source, pass it to ix86_expand_vector_set and return + it as target. + +2007-04-16 David Ung + Joseph Myers + + * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF, + PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define. + * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data): + Add 74K processor information. + * config/mips/mips.md: Include 74k.md. + (cpu): Add 74kc,74kf,74kx. + (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout. + * config/mips/74k.md: New. + * doc/invoke.texi (MIPS Options): Document 74K support. + +2007-04-16 Dorit Nuzman + + * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to + vectorizable_* functions. + * tree-vect-transform.c (vectorizable_call): Add check for + STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P. + (vectorizable_store): likewise. + (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE. + Add comments. + (vectorizable_operation, vectorizable_type_demotion): Likewise. + (vectorizable_type_promotion, vectorizable_load): Likewise. + (vectorizable_live_operation, vectorizable_condition): Likewise. + (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and + STMT_VINFO_LIVE_P. + (vect_transform_stmt): Reorganize calls to vectorizable_* functions. + +2007-04-15 Kazu Hirata + + * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for + register numbers more. + * config/m68k/m68k.h (STACK_POINTER_REGNUM, + FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM, + M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE, + FUNCTION_VALUE_REGNO_P): Likewise. + * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM, + STATIC_CHAIN_REGNUM): Likewise. + * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise. + * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM, + STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise. + * config/m68k/m68k.md (FP_REG): New. + +2007-04-15 Kazu Hirata + + * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit + alignment on fido. + +2007-04-15 Kazu Hirata + + * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md, + tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix + comment typos. + +2007-04-11 Zdenek Dvorak + + * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore + cold loops. + +2007-04-14 Andrew Pinski + + PR c/31520 + * c-decl.c (finish_decl): Grab the type of the decl after the call + to store_init_value. + +2007-04-14 Steven Bosscher + + * common.opt (fforward-propagate): Fix "Optimization" annotation. + +2007-04-14 Jakub Jelinek + + PR c++/25874 + * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators, + post dominators and cleanup cfg before returning. + +2007-04-14 Bernd Schmidt + + * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied. + * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives. + +2007-04-14 Kazu Hirata + + * config.gcc: Recognize fido. + * config/m68k/m68k-devices.def (fidoa): New. + * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define + __mfido__. + (FL_FIDOA, TARGET_FIDOA): New. + * config/m68k/m68k.opt (mfidoa): New. + +2007-04-13 John David Anglin + + PR middle-end/31322 + * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall + when a personality function is used. + +2007-04-13 Bob Wilson + + * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN. + +2007-04-13 Mike Stump + + * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so + we can... + * config/darwin.opt (fapple-kext): Make C++ only. + * config/darwin.c (darwin_override_options): Remove code to ensure + -fapple-kext is given for C++ only. + +2007-04-13 Richard Sandiford + + * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define. + * config/mips/mips.c (override_options): Call + SUBTARGET_OVERRIDE_OPTIONS, if defined. + +2007-04-13 H.J. Lu + + * config/i386/i386.opt (msvr3-shlib): Removed. + + * doc/invoke.texi: Remove -msvr3-shlib. + +2007-04-13 H.J. Lu + + * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction + with "popcnt" instruction. + +2007-04-13 Richard Guenther + + PR tree-optimization/21258 + * tree-vrp.c (compare_case_labels): New helper. + (find_switch_asserts): New function. + (find_assert_locations): Call it for SWITCH_EXPRs. + +2007-04-13 Uros Bizjak + + * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387. + * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this + check is now implied in X87_FLOAT_MODE_P. + (*cmpfp_u, *cmpfp_, *cmpfp_i_i387): Ditto. + (*cmpfp_iu_387, fix_trunc_fisttp_i386_1): Ditto. + (fix_trunc_i386_fisttp): Ditto. + (fix_trunc_i387_fisttp_with_temp): Ditto. + (*fix_trunc_i387_1, fix_truncdi_i387): Ditto. + (fix_truncdi_i387_with_temp, fix_trunc_i387): Ditto. + (fix_trunc_i387_with_temp, *fp_jcc_1_387): Ditto. + (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto. + (*fp_jcc_7_387, *fp_jcc_8_387): Ditto. + (unnamed_splitters): Ditto. + * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG + for X87_FLOAT_MODE_P mode. Override FIRST_FLOAT_REG with + FIRST_SSE_REG for local functions when SSE math is enabled or + for functions with sseregparm attribute. + (standard_80387_constant_p): Return -1 if mode is not + X87_FLOAT_MODE_P. + (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P. + (ix86_expand_compare): Ditto. + (ix86_expand_carry_flag_compare): Ditto. + (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead + of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not + DECIMAL_FLOAT_MODE_P. + (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead + of SCALAR_FLOAT_MODE_P. + (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ... + [MINUS]: ... here. Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P + checks before FLOAT_MODE_P. + [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks + before FLOAT_MODE_P. + [DIV]: Ditto. + [NEG]: Ditto. + [ABS]: Ditto. + [SQRT]: Ditto. + [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P. + +2007-04-12 Paolo Bonzini + Charles Wilson + + * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove. + (libgcc.mvars): Don't depend on them. + * configure.ac (as, collect-ld, nm): Create from exec-tool.in. + * exec-tool.in: New. + +2007-04-12 Brooks Moses + + * doc/invoke.text (--help): Document --help=common. + +2007-04-12 Thomas Neumann + + * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords. + +2007-04-12 Richard Sandiford + + * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H). + * genemit.c (main): Emit #include "integrate.h". + * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type. + (LOADGP_RTP): New mips_loadgp_style. + * config/mips/mips.h: Include config/vxworks-dummy.h. + (TARGET_RTP_PIC): New macro. + (TARGET_USE_GOT): Return true for TARGET_RTP_PIC. + (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP. + (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables + for TARGET_RTP_PIC. + * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define. Pass down + -mvxworks-pic when using -mrtp and a PIC option. + * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP + for RTP PIC. + (mips_symbolic_constant_p, mips_symbolic_address_p) + (mips_symbol_insns): Handle SYMBOL_HALF. + (override_options): Warn about -G and -mrtp being used together. + Initialize mips_lo_relocs[SYMBOL_HALF]. + (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC. + (mips_emit_loadgp): Handle LOADGP_RTP. + (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP. + * config/mips/mips.md (loadgp_rtp): New insn and splitter. + (tablejump): Handle function-relative case table entries if + TARGET_RTP_PIC. + * config/mips/predicates.md (symbol_ref_operand): New predicate. + +2007-04-12 Richard Sandiford + + * config/mips/mips.md (load_call): Allow any general register. + destination. + (sibcall_value_internal, sibcall_value_multiple_internal) + (call_value_internal, call_value_split, call_value_multiple_internal) + (call_value_multiple_split): Remove constraints from operand 0. + +2007-04-12 Richard Sandiford + + * config/mips/mips-protos.h: In comments, refer to loadgp_absolute + rather than loadgp_noshared. + * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute + instead of gen_loadgp_noshared. Use gen_loadgp_newabi instead of + gen_loadgp. + * config/mips/mips.md (loadgp): Rename to... + (loadgp_newabi): ...this. + (loadgp_noshared): Rename to... + (loadgp_absolute): ...this. + +2007-04-12 Richard Sandiford + + * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return + false for locally-binding symbols. + (mips_dangerous_for_la25_p): Check mips_global_symbol_p. + +2007-04-12 Richard Sandiford + + * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to... + (SYMBOL_GOT_PAGE_OFST): ...this. + (SYMBOL_GOT_GLOBAL): Rename to... + (SYMBOL_GOT_DISP): ...this. + (SYMBOL_GOTOFF_GLOBAL): Rename to... + (SYMBOL_GOTOFF_DISP): ...this. Update comments accordingly. + * config/mips/mips.c (mips_global_symbol_p): New function. + (mips_symbol_binds_local_p): Likewise. + (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP + and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST. Use mips_global_symbol_p + and mips_symbol_binds_local_p. + (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns) + (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP, + SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to + SYMBOL_GOTOFF_DISP. + (mips_ok_for_lazy_binding_p): New function. + (mips_load_call_address, mips_expand_call): Use it. + (mips_dangerous_for_la25_p): Likewise. + * config/mips/mips.md (*xgot_hi, *xgot_lo) + (*got_disp): Use got_disp_operand instead of + global_got_operand. Use SYMBOL_GOTOFF_DISP instead of + SYMBOL_GOTOFF_GLOBAL. + (*got_page): Use got_page_ofst_operand instead of + local_got_operand. + * config/mips/predicates.md (const_call_insn_operand): Use + SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL. + (global_got_operand): Rename to... + (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of + SYMBOL_GOT_GLOBAL. + (local_got_operand): Rename to... + (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead + of SYMBOL_GOT_LOCAL. + +2007-04-12 Richard Sandiford + + * config/mips/mips.h (TARGET_SPLIT_CALLS): Check + TARGET_CALL_CLOBBERED_GP. + (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS. + (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros. + (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise. + (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead + of TARGET_ABICALLS && !TARGET_NEWABI. + (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS. + * config/mips/mips.c (mips_load_call_address): Check + TARGET_CALL_SAVED_GP instead of TARGET_NEWABI. + (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS. + Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI. + (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of + TARGET_ABICALLS && TARGET_NEWABI. + (mips_current_loadgp_style): Check TARGET_USE_GOT instead of + TARGET_ABICALLS. + (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI. + (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of + TARGET_ABICALLS && TARGET_NEWABI. + (mips_output_mi_thunk): Check TARGET_USE_GOT instead of + TARGET_ABICALLS. Check TARGET_CALL_SAVED_GP instead of + TARGET_NEWABI. Use TARGET_USE_PIC_FN_ADDR_REG to decide + whether indirect calls must use $25. + (mips_extra_live_on_entry): Check TARGET_GOT instead of + TARGET_ABICALLS. + * config/mips/mips.md (jal_macro): Check flag_pic and + TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI. + (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT + instead of TARGET_ABICALLS. + (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of + TARGET_ABICALLS && TARGET_OLDABI. + (load_call): Check TARGET_USE_GOT instead of TARGET_ABICALLS. + (sibcall): In the comment above the define_insn, mention + TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS. + * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG + instead of TARGET_ABICALLS. + +2007-04-12 Bernd Schmidt + + * doc/md.texi (Blackfin family constraints): Document PA and PB. + * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB. + (MACFLAGS_MATCH_P): New macro. + * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M. + (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS. + * config/bfin/bfin.md (MACFLAG_IS_M): New constant. Renumber some of + the other MACFLAG constants. + (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns. + (flag_machi): Tighten constraints. Renumber some of the operands. + (flag_machi_acconly): Tighten constraints. Correct operand numbers in + output template. + (flag_machi_parts_acconly): New pattern. + (flag_macinithi): Tighten constraints. Allow any accumulator to be + used. + (flag_macinit1hi): Tighten constraints. + (flag_mul_macv2hi_parts_acconly): New pattern. + + * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart): + Use a more efficient implementation. + * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit + inline sequences when not optimizing for size. + + * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low, + movhi_high2low): Delete, merge functionality into... + (packv2hi): ... this pattern. + + 2007-02-11 Jie Zhang + * config/bfin/bfin.opt (msim): New option. + (mcpu=): New option. + * config/bfin/bfin-protos.h (enum bfin_cpu): New. + (bfin_cpu_t): Typedef of enum bfin_cpu. + (bfin_cpu_type): New declaration. + * config/bfin/elf.h (STARTFILE_SPEC): Add support for + -msim and -mcpu= options. + (LIB_SPEC): Likewise. + * config/bfin/bfin.c (bfin_cpu_type): Define. + (bfin_handle_option): Handle -mcpu= option. + * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532. + (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__, + __ADSPBF533__ or __ADSPBF537__ according to the cpu type. + +2007-04-12 Richard Sandiford + + * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza. + (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks) + (powerpc-wrs-vxworksae): Use ${tm_file}. + (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h + after elfos.h. Remove i386/sysv4.h and add i386/vx-common.h. + * config/i386/vx-common.h: New file. + +2007-04-12 Richard Sandiford + + * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead + of crt0.o%s. + +2007-04-12 Andreas Krebbel + + * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of + ldxtr. + 2007-04-12 Douglas Gregor PR c++/31078 PR c++/31103 * c-common.c (c_build_qualified_type): Set canonical type - appropriately. + appropriately. 2007-04-12 Richard Guenther @@ -538,16 +1369,16 @@ 2007-04-04 Chen Liqin - * config/score/crti.asm: Change _bss_start to __bss_start. - * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added. - (OUTGOING_REG_PARM_STACK_SPACE) update. - * config/score/score.opt: add options to make backend support - score5, score5u, score7 and score7d. - * config/score/score.md: Likewise. - * config/score/misc.md: Likewise. - * config/score/mac.md: Likewise. - * doc/invoke.texi: Likewise. - * doc/md.texi: update constraints define. + * config/score/crti.asm: Change _bss_start to __bss_start. + * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added. + (OUTGOING_REG_PARM_STACK_SPACE) update. + * config/score/score.opt: add options to make backend support + score5, score5u, score7 and score7d. + * config/score/score.md: Likewise. + * config/score/misc.md: Likewise. + * config/score/mac.md: Likewise. + * doc/invoke.texi: Likewise. + * doc/md.texi: update constraints define. 2007-04-03 Richard Henderson @@ -2781,7 +3612,7 @@ (thread_across_edge): Likewise. * tree-flow.h (vrp_evaluate_conditional): Update declaration. (thread_across_edge): Likewise. - * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h. + * Makefile.in (tree-vrp.o): Depend upon intl.h. 2007-03-08 Uros Bizjak @@ -5579,7 +6410,7 @@ 2007-02-13 Stuart Hastings - * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2. + * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2. 2007-02-13 Richard Henderson @@ -5869,21 +6700,21 @@ 2007-02-09 Stuart Hastings Richard Henderson - * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New. - * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New. - * gcc/config/i386/i386.md (fixuns_truncsi2, fixuns_truncsfhi2, + * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New. + * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New. + * config/i386/i386.md (fixuns_truncsi2, fixuns_truncsfhi2, fixuns_truncdfhi2): New. (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse. (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse. (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse. (floatunssidf2): Allow nonimmediate source. - * gcc/config/i386/sse.md (movdi_to_sse): New. + * config/i386/sse.md (movdi_to_sse): New. (vec_concatv2di): Drop '*'. - * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse, + * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse, ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse, ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse): New. - * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse, + * config/i386/i386.c (ix86_expand_convert_uns_si_sse, ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse, ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse, ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New. @@ -7178,7 +8009,7 @@ 2007-01-31 Kazu Hirata - * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New. + * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New. 2007-01-30 Eric Christopher