OSDN Git Service

PR target/44546
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index ea90541..b87c634 100644 (file)
@@ -1,3 +1,554 @@
+2010-06-20  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/44546
+       * config/i386/predicates.md (ix86_swapped_fp_comparsion_operator):
+       New predicate.
+       * config/i386/i386.md (*fp_jcc_8<mode>_387): Use
+       ix86_swapped_fp_comparsion_operator instead of
+       ix86_fp_comparison_operator.
+
+       (*fp_jcc_1_387): Rename from *fp_jcc_3_387.
+       (*fp_jcc_1r_387): Rename from *fp_jcc_4_387.
+       (*fp_jcc_2_387): Rename from *fp_jcc_5_387.
+       (*fp_jcc_2r_387): Rename from *fp_jcc_6_387.
+       (*fp_jcc_3_387): Rename from *fp_jcc_7_387.
+       (*fp_jcc_4_<mode>_387): Rename from *fp_jcc_8<mode>_387.
+
+2010-06-20  Joseph Myers  <joseph@codesourcery.com>
+
+       PR other/32998
+       * opth-gen.awk: Generate definitions of OPT_SPECIAL_unknown,
+       OPT_SPECIAL_program_name and OPT_SPECIAL_input_file.
+       * opts-common.c (find_opt): Return OPT_SPECIAL_unknown on failure.
+       (decode_cmdline_option): Update for this return value.  Set
+       orig_option_with_args_text field.  Set arg field for unknown
+       options.  Make static.
+       (decode_cmdline_options_to_array): New.
+       (prune_options): Update handling of find_opt return value.
+       * opts.c (read_cmdline_option): Take decoded option.  Return void.
+       (read_cmdline_options): Take decoded options.
+       (decode_options): Add parameters for decoded options.  Use
+       decode_cmdline_options_to_array.  Use decoded options for -O
+       scan.  Use integral_argument for -O parameters.  Update call to
+       read_cmdline_options.
+       (enable_warning_as_error): Update handling of find_opt return value.
+       * opts.h: Update comment on unknown options.
+       (struct cl_decoded_option): Update comments on opt_index and arg.
+       Add orig_option_with_args_text.
+       (decode_cmdline_option): Remove.
+       (decode_cmdline_options_to_array): Declare.
+       (decode_options): Update prototype.
+       * toplev.c (save_argv): Remove.
+       (save_decoded_options, save_decoded_options_count): New.
+       (read_integral_parameter): Remove.
+       (print_switch_values): Use decoded options.
+       (toplev_main): Don't set save_argv.  Update call to decode_options.
+       * toplev.h (read_integral_parameter): Remove.
+       * varasm.c (elf_record_gcc_switches): Don't handle holding back names.
+
+2010-06-19  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/44072
+       * arm.md (cmpsi2_addneg): Prefer emitting adds to subs with a negative
+       immediate.
+       * constraints.md (Pw, Px): New constraints.
+       * thumb2.md (cmpsi2_addneg peephole2): New peepholes.
+
+2010-06-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/sse.md (fma4modesuffixf4): Removed.
+       (ssemodesuffixf2s): Likewise.
+       (ssemodesuffixf4): Likewise.
+       (ssemodesuffixf2c): Likewise.
+       (ssescalarmodesuffix2s): Likewise.
+       (avxmodesuffixf2c): Likewise.
+       (ssemodesuffix): New.
+       (ssescalarmodesuffix): Likewise.
+       Update patterns with ssemodesuffix and ssescalarmodesuffix.
+
+2010-06-19  Philip Herron  <herron.philip@googlemail.com>
+
+       * c-decl.c (c_write_global_declarations): Don't check
+       flag_syntax_only.
+
+2010-06-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * stor-layout.c (debug_rli): Remove unused local variables.
+
+2010-06-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/40900
+       * expr.c (expand_expr_real_1) <SSA_NAME>: Fix long line.  Save the
+       original expression for later reuse.
+       <expand_decl_rtl>: Use promote_function_mode to compute the signedness
+       of the promoted RTL for a SSA_NAME on the LHS of a call statement.
+
+2010-06-18  Anatoly Sokolov  <aesok@post.ru>
+
+       * double-int.h (double_int_to_shwi, double_int_to_uhwi,
+       double_int_fits_in_uhwi_p): Implement as static inline.
+       (double_int_xor): New inline function.
+       (double_int_lrotate, double_int_rrotate, double_int_max,
+       double_int_umax, double_int_smax, double_int_min, double_int_umin,
+       double_int_smin): Declare.
+       (lrotate_double, rrotate_double): Remove declaration.
+       * double-int.c (double_int_fits_in_uhwi_p, double_int_to_shwi,
+       double_int_to_uhwi, lrotate_double, rrotate_double): Remove function.
+       (double_int_lrotate, double_int_rrotate, double_int_max,
+       double_int_umax, double_int_smax, double_int_min, double_int_umin,
+       double_int_smin): New function.
+       * fold-const.c (int_const_binop): Clean up, use double_int_*
+       functions.
+       * simplify-rtx.c (simplify_const_binary_operation): Clean up, use
+       double_int_* and immed_double_int_const functions.
+
+2010-06-18  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * function.h (types_used_by_cur_var_decl): Change type to a VEC.
+       * function.c (types_used_by_cur_var_decl): Likewise.
+       (used_types_insert): Adjust for new type of
+       types_used_by_cur_var_decl.
+
+2010-06-18  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (record_layout_info): Change type of pending_statics field
+       to a VEC.
+       * stor-layout.c (start_record_layout): Store NULL into
+       pending_statics.
+       (debug_rli): Call debug_vec_tree instead of debug_tree.
+       (place_field): Likewise.
+       (finish_record_layout): Likewise.
+
+2010-06-18  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/linux64.h (SET_CMODEL): Don't expand to empty.
+
+2010-06-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR target/43740
+       * config/pa/pa.c (emit_move_sequence): Don't infer REG_POINTER flag
+       for SET source operand from SET destination operand.
+
+2010-06-17  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR rtl-optimization/39871
+       * reload1.c (init_eliminable_invariants): For flag_pic, disable
+       equivalences only for constants that aren't LEGITIMATE_PIC_OPERAND_P.
+       (function_invariant_p): Rule out a plus of frame or arg pointer with
+       a SYMBOL_REF.
+       * ira.c (find_reg_equiv_invariant_const): Likewise.
+
+2010-06-17  Gunther Nikl  <gnikl@users.sourceforge.net>
+
+       * config/rs6000/rs6000.c (print_operand) <'K'>: Also use
+       print_operand_address and puts to output the operand for CONST.
+
+2010-06-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/44572
+       * dwarf2out.c (dwarf2out_debug_hooks): Add entry for begin_epilogue
+       hook.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * v850-protos.h (print_operand): Delete.
+       (print_operand_address): Delete.
+       * v850.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * v850.c (print_operand_address): Rename to...
+       (v850_print_operand_address): ...this.  Make static. Call
+       v850_print_operand.
+       (print_operand): Rename to...
+       (v850_print_operand): ...this.  Make static.  Call
+       v850_print_operand_address.
+       (v850_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define.
+       (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/sh/sh-protos.h (print_operand): Delete.
+       (print_operand_address): Delete.
+       * config/sh/sh.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/sh/sh.c (sh_print_operand_address): Make static.
+       (sh_print_operand): Make static.  Call sh_print_operand_address
+       and sh_print_operand.
+       (sh_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define.
+       (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/mcore/mcore-protos.h (mcore_print_operand): Delete.
+       (mcore_print_operand_address): Delete.
+       * config/mcore/mcore.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/mcore/mcore.c (mcore_print_operand_address): Make static.
+       (mcore_print_operand): Make static.
+       (mcore_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define
+       (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/m68hc11/m68hc11-protos.h (print_operand): Delete.
+       (print_operand_address): Delete.
+       * config/m68hc11/m68hc11.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/m68hc11/m68hc11.c (m68hc11_print_operand_address): Make
+       static.
+       (m68hc11_print_operand): Make static.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/m32r/m32r-protos.h (m32r_print_operand): Delete.
+       (m32r_print_operand_address): Delete.
+       * config/m32r/m32r.h (m32r_punct_chars): Delete.
+       (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/m32r/m32r.c (m32r_punct_chars): Make static.
+       (m32r_print_operand_address): Make static.
+       (m32r_print_operand): Make static.
+       (m32r_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS):
+       (TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/iq2000/iq2000-protos.h (print_operand): Delete.
+       (print_operand_address): Delete.
+       * config/iq2000/iq2000.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       (iq2000_print_operand_punct): Delete.
+       * config/iq2000/iq2000.c (iq2000_print_operand_punct): Make static.
+       (iq2000_print_operand_address): Make static.
+       (iq2000_print_operand): Make static.
+       (iq2000_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS):
+       (TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/frv/frv-protos.h (frv_print_operand): Delete.
+       (frv_print_operand_address): Delete.
+       * config/frv/frv.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/frv/frv.c (frv_print_operand_address): Make static.
+       (frv_print_operand): Make static.
+       (frv_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS):
+       (TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (vec_member): Declare.
+       * tree.c (vec_member): Define.
+
+2010-06-17  Richard Guenther  <rguenther@suse.de>
+
+       * tree-flow-inline.h (array_ref_contains_indirect_ref): Remove.
+       * tree-flow.h (array_ref_contains_indirect_ref): Likewise.
+
+2010-06-17  Richard Guenther  <rguenther@suse.de>
+
+       * tree-inline.c (declare_return_variable): Remove bogus code.
+
+2010-06-17  Richard Guenther  <rguenther@suse.de>
+
+       * gimplify.c (gimplify_bind_expr): Always promote complex
+       and vector variables to registers if possible.
+
+2010-06-17  Richard Guenther  <rguenther@suse.de>
+
+       * expr.c (get_inner_reference): Use double_int for bit_offset
+       calculation.
+
+2010-06-16  DJ Delorie  <dj@redhat.com>
+
+       * common.opt (-fstrict-volatile-bitfields): new.
+       * doc/invoke.texi: Document it.
+       * fold-const.c (optimize_bit_field_compare): For volatile
+       bitfields, use the field's type to determine the mode, not the
+       field's size.
+       * expr.c (expand_assignment): Likewise.
+       (get_inner_reference): Likewise.
+       (expand_expr_real_1): Likewise.
+       * expmed.c (store_fixed_bit_field): Likewise.
+       (extract_bit_field_1): Likewise.
+       (extract_fixed_bit_field): Likewise.
+
+2010-06-16  Richard Guenther  <rguenther@suse.de>
+
+       * tree-inline.c (remap_gimple_op_r): Recurse using remap_gimple_op_r.
+
+2010-06-16  Douglas B Rupp  <rupp@gnat.com>
+
+       * config/ia64/vms.h (ASM_OUTPUT_DWARF_DELTA_UNITS): Remove.
+       (ASM_OUTPUT_DWARF_VMS_DELTA: Define new macro.
+       * dbxout.c (gcc_debug_hooks): New entry begin_epilogue.
+       * debug.c: Likewise.
+       * sdbout.c: Likewise.
+       * vmsdbgout.c: Likewise.
+       * debug.h: Likewise. (dwarf2out_vms_{begin,end}_prologue): Declare.
+       * doc/tm.texi (ASM_OUTPUT_DWARF_VMS_DELTA): Document.
+       * dwarf2asm.c (dw2_asm_output_vms_delta): New function.
+       (ASM_OUTPUT_DWARF_VMS_DELTA): Call it.
+       * dwarf2asm.h (dw2_asm_output_vms_delta): Declare.
+       * dwarf2out.c (dw_fde_struct): New fields
+       dw_fde_vms_{end,begin}_prologue.
+       (PROLOGUE_END_LABEL, EPILOGUE_BEGIN_LABEL): New macros.
+       (dwarf2out_begin_prologue): Set dw_fde_struct defaults for above.
+       (dwarf2out_vms_end_prologue): New function.
+       (dwarf2out_vms_begin_epilogue): New function.
+       (dw_val_struct): New value dw_val_class_vms_delta.
+       (gcc_debug_hooks): New entry begin_epilogue. Set end_prologue,
+       begin_epilogue for VMS.
+       (AT_vms_delta1, AT_vms_delta2, add_AT_vms_delta): Declare
+       new static functions.
+       (dwarf_attr_name): New cases DW_AT_HP_{prologue,epilogue}.
+       (AT_vms_delta1, AT_vms_delta2, add_AT_vms_delta): New
+       static functions.
+       (print_die): New case dw_val_class_vms_delta.
+       (attr_checksum): Likewise.
+       (same_dw_val_p: Likewise.
+       (size_of_die): Likewise.
+       (value_format): Likewise.
+       (output_die): Likewise.
+       (gen_subprogram_die): Call add_AT_vms_delta on VMS.
+       (dwarf2out_begin_epilogue): Rename to dwarf2out_cfi_begin_epilogue
+       * dwarf2out.h (dwarf2out_begin_epilogue): Rename to
+       dwarf2out_cfi_begin_epilogue
+       * final.c (final_scan_insn): Likewise. Call begin_epilogue.
+
+2010-06-16  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/cris/cris-protos.h (cris_print_operand): Delete.
+       (cris_print_operand_address): Delete.
+       * config/cris/cris.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS): Delete.
+       * config/cris/cris.c (cris_print_operand_address): Make static.
+       (cris_print_operand): Make static.
+       (cris_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS):
+       (TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-16  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * config/arm/arm-protos.h (arm_print_operand): Delete.
+       (arm_print_operand_address): Delete.
+       * config/arm/arm.h (PRINT_OPERAND): Delete.
+       (PRINT_OPERAND_PUNCT_VALID_P): Delete.
+       (PRINT_OPERAND_ADDRESS, ARM_PRINT_OPERAND_ADDRESS):
+       (THUMB_PRINT_OPERAND_ADDRESS): Delete and move code to...
+       * config/arm/arm.c (arm_print_operand_address): ...here.  New
+       function.
+       (arm_print_operand): Make static.
+       (arm_print_operand_punct_valid_p): New function.
+       (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS):
+       (TARGET_PRINT_OPERAND_ADDRESS): Define.
+
+2010-06-16  Nick Clifton  <nickc@redhat.com>
+
+       * config/rx/constraints.md (NEGint4): New constraint.
+       * config/rx/rx.md (attr cc): Add set_zsc.
+       (cbranchsf4): Only test for -fnon-call-exceptions if cfun has been
+       initialised.
+       (cmpsf): Likewise.
+       (call_internal): Clobber the cc0 register.
+       (call_value_internal): Likewise.
+       (cstoresi4): Likewise.
+       (movsieq): Likewise.
+       (movsine): Likewise.
+       (addsi3): Add alternative to handle small negative constants.
+       (sunsi3): Likewise.
+       (addsi3): Do not set the O bit in the cc0 register.
+       (adddi3): Likewise.
+       (subsi3): Likewise.
+       (subdi3): Likewise.
+       (andsi3): Reorder alternatives to prefer shorter forms.
+       (mulsi3): Likewise.
+       (iorsi3): Likewise.
+       (negsi2): Note that the cc0 flags are set.
+       (rotlsi3): Note that only the Z and S bits are set in cc0.
+       (lshrsi3): Likewise.
+       (ashlsi3): Likewise.
+       (subsf3): Use %Q for the MEM operand.
+       (fix_truncsfsi2): Likewise.
+       (floatsisf2): Likewise.
+       (bitset): Remove early clobber from destination.
+       (bitset_in_memory): Likewise.
+       (lrintsf2): Clobber the cc0 register.
+       * config/rx/rx.c (rx_notice_update_cc): Handle CC_SET_ZSC.
+       (rx_print_operand): Handle %N.
+
+2010-06-16  Jan Hubicka  <jh@suse.cz>
+
+       * df-core.c (df_compact_blocks): Free problem_temps vector.
+
+2010-06-16  Martin Jambor  <mjambor@suse.cz>
+
+       PR tree-optimization/43905
+       * tree-sra.c: Include tree-inline.h.
+       (create_abstract_origin): Removed.
+       (modify_function): Version the call graph node instead of creating
+       abstract origins and dealing with same_body aliases.
+       * tree-sra.c (ipa_sra_preliminary_function_checks): Check whether the
+       function is versionable.
+       * Makefile.in (tree-sra.o): Add TREE_INLINE_H to dependencies.
+
+2010-06-16  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       * config/mips/linux64.h (BIONIC_DYNAMIC_LINKERN32): Define.
+       (CHOOSE_DYNAMIC_LINKER): Update.
+
+2010-06-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (*prefetch_sse_<mode>):  Macroize insn from
+       *prefetch_sse and *prefetch_sse_rex using P mode iterator.
+       (*prefetch_3dnow_<mode>): Ditto from *prefetch_3dnow and
+       *prefetch_3dnow_rex.
+
+2010-06-15  Anatoly Sokolov  <aesok@post.ru>
+
+       * target.h (struct asm_out):Add declare_constant_name field.
+       * target-def.h (TARGET_ASM_DECLARE_CONSTANT_NAME): Define.
+       (TARGET_INITIALIZER): Use TARGET_ASM_DECLARE_CONSTANT_NAME.
+       * output.h (default_asm_declare_constant_name): Declare.
+       (assemble_label): Update prototype.
+       * varasm.c (assemble_constant_contents): Use
+       targetm.asm_out.declare_constant_name target hook.
+       (assemble_label): Add 'file' argument.
+       (default_asm_declare_constant_name): New function.
+       * system.h (ASM_DECLARE_CONSTANT_NAME): Poison.
+       * doc/tm.texi (ASM_DECLARE_CONSTANT_NAME): Remove.
+       (TARGET_ASM_DECLARE_CONSTANT_NAME): Document it.
+
+       * config/darwin-protos.h (darwin_asm_declare_constant_name): Declare.
+       * config/darwin.c (darwin_asm_declare_constant_name): New function.
+       (machopic_output_indirection): Update assemble_label argument list.
+       * config/darwin.h (ASM_DECLARE_CONSTANT_NAME): Remove.
+       (TARGET_ASM_DECLARE_CONSTANT_NAME): Define.
+
+2010-06-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/44391
+       * graphite-clast-to-gimple.c (graphite_create_new_loop_guard): Use
+       size_one_node for pointer types.  Do not call gmp_cst_to_tree.
+
+2010-06-15  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-pre.c (eliminate): Handle PHI elimination to constants.
+
+2010-06-15  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/arm.c (use_vfp_abi): Add sorry() for Thumb-1
+       hard-float ABI.
+
+2010-06-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       * tree-vect-patterns.c (vect_pattern_recog_1): Bail out if we
+       don't get a vector type for output.
+
+2010-06-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/44536
+       * langhooks.h (struct lang_hooks_for_decls): Add omp_report_decl.
+       * langhooks-def.h (LANG_HOOKS_OMP_REPORT_DECL): Define.
+       (LANG_HOOKS_DECLS): Add it.
+       * gimplify.c (omp_notice_variable): Call
+       lang_hooks.decls.omp_report_decl.
+
+2010-06-15  Martin Jambor  <mjambor@suse.cz>
+
+       PR lto/44464
+       * tree-sra.c (replace_removed_params_ssa_names): Call release_ssa_name
+       on the newly dead SSA name.
+
+2010-06-15  Alan Modra  <amodra@gmail.com>
+
+       * doc/invoke.texi: Add mcmodel to powerpc options.
+       * configure.ac: Add HAVE_LD_LARGE_TOC test.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * config/rs6000/linux64.opt (mcmodel): New.
+       * config/rs6000/linux64.h (TARGET_USES_LINUX64_OPT): Define.
+       (TARGET_CMODEL, SET_CMODEL): Define.
+       (SUBSUBTARGET_OVERRIDE_OPTIONS): Check user -mcmodel choice,
+       select CMODEL_MEDIUM default.
+       * config/rs6000/rs6000.h (enum rs6000_cmodel): New.
+       (TARGET_CMODEL): Define default.
+       * config/rs6000/rs6000.c (cmodel): New variable.
+       (rs6000_explicit_options): Add cmodel field.
+       (rs6000_handle_option): Handle -mcmodel.
+       (create_TOC_reference): Add largetoc_reg param.  Generate high,
+       lo_sum rtl for CMODEL_MEDIUM and CMODEL_LARGE.  Update all callers.
+       (rs6000_delegitimize_address): Recognise new toc reference rtl
+       and minimal-toc rtl.
+       (rs6000_legitimize_reload_address): Handle new toc references.
+       (print_operand_address): Handle legitimate_constant_pool_address_p
+       match before lo_sum.
+       (rs6000_eliminate_indexed_memrefs): Tidy.
+       (rs6000_emit_move): Tweak threshold for inlining constants.
+       Keep rs6000_emit_allocate_stack large stack frame offsets
+       loaded into r0 inline.
+       (rs6000_generate_compare <cmptf_internal2>): One more clobber.
+       (tocrel_base, tocrel_offset): New variables.
+       (toc_relative_expr_p): Set them here.
+       (print_operand_address): Skip over any offset on constant pool address.
+       (rs6000_output_addr_const_extra): Print tocrel_offset before @toc.
+       (rs6000_mode_dependent_address <LO_SUM>): False for new toc refs.
+       (offsettable_ok_by_alignment): New function.
+       (rs6000_emit_move): Address suitably aligned local symbol_refs
+       relative to the toc pointer for -mcmodel=medium.
+       (legitimate_constant_pool_address_p): Make param const_rtx.  Add
+       strict param.  Allow lo_sum version of addressing.  Verify reg
+       used for -mminimal-toc and -mcmodel != small.  Update all callers.
+       * config/rs6000/constraints.md: Update for above change.
+       * config/rs6000/predicates.md: Likewise.
+       * config/rs6000/rs6000.md (tls_gd_aix): Generate -mcmodel=medium/large
+       code.
+       (tls_gd): Split for -mcmodel=medium/large.
+       (tls_gd_high, tls_gd_low): New.
+       (tls_ld_aix, tls_ld, tls_ld_high, tls_ld_low): Similarly.
+       (tls_got_dtprel, tls_got_dtprel_high, tls_got_dtprel_low): Similarly.
+       (tls_got_tprel, tls_got_tprel_high, tls_got_tprel_low): Similarly.
+       (largetoc_high, largetoc_low): New.
+       (cmptf_internal2): Add clobber.
+       * config/rs6000/rs6000-protos.h: Update.
+
+2010-06-14  Changpeng Fang  <changpeng.fang@amd.com>
+
+       * tree-ssa-loop-prefetch.c (nothing_to_prefetch_p): New.  Return
+       true if no prefetch is going to be generated for a given group.
+       (estimate_prefetch_count): Use prefetch_mod and unroll_factor to
+       estimate the prefetch_count.
+       (loop_prefetch_arrays): Call nothing_to_prefetch_p; estimate the
+       prefetch count by considering the unroll_factor and prefetch_mod
+       for is_loop_prefetching_profitable.
+
+2010-06-14  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * config/m68k/m68k.c (m68k_delegitimize_address): Don't do
+       anything if the argument is not a MEM.
+
+2010-06-14  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/43650
+       PR debug/44181
+       PR debug/44247
+       * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Skip
+       debug stmts.
+       (canonicalize_loop_ivs): Likewise.
+
 2010-06-14  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/43656
        (bitpack_create, lto_output_bitpack, lto_input_bitpack):
        New inline functions.
        * lto-streamer-out.c (lto_output_bitpack): Remove.
-       (pack_ts_base_value_fields): Adjust.  Avoid conditional
-       bitpacking.
+       (pack_ts_base_value_fields): Adjust.  Avoid conditional bitpacking.
        (pack_value_fields): Adjust.
        (lto_write_tree): Likewise.
        (output_gimple_stmt): Likewise.
        (output_function): Likewise.
        * lto-streamer-in.c (input_gimple_stmt): Adjust.
        (input_function): Likewise.
-       (unpack_ts_base_value_fields): Adjust.  Avoid conditional
-       bitpacking.
+       (unpack_ts_base_value_fields): Adjust.  Avoid conditional bitpacking.
        (lto_input_bitpack): Remove.
        (lto_materialize_tree): Adjust.
        * Makefile.in (ipa-prop.o): Add $(LTO_STREAMER_H) dependency.
 2010-06-14  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/44534
-       * config/i386/sse.md (vec_extract_lo_<mode>): Replace 0x1 with
-       0x0.
+       * config/i386/sse.md (vec_extract_lo_<mode>): Replace 0x1 with 0x0.
        (vec_extract_lo_v16hi): Likewise.
        (vec_extract_lo_v32qi): Likewise.
 
        (build_call_expr): New function.
 
        PR tree-optimization/44508
-       * tree-ssa-propagate.h (substitute_and_fold): Add DO_DCE
-       argument.
+       * tree-ssa-propagate.h (substitute_and_fold): Add DO_DCE argument.
        * tree-ssa-propagate.c (substitute_and_fold): If !DO_DCE,
        don't eliminate trivially dead stmts.
        * tree-vrp.c (vrp_finalize): Pass false as last argument
 
 2010-06-14  Ira Rosen  <irar@il.ibm.com>
 
-       PR tree-optimization/44507 
+       PR tree-optimization/44507
        * tree-vect-loop.c (get_initial_def_for_reduction): Use -1
        to build initial vector for BIT_AND_EXPR.
        * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
 
 2010-06-12  Kazu Hirata  <kazu@codesourcery.com>
 
-       * config.gcc (mips64*-*-linux*, mipsisa64*-*-linux*,
-       mips*-*-linux*): Add crtfastmath.o to extra_parts.
+       * config.gcc (mips64*-*-linux*, mipsisa64*-*-linux*, mips*-*-linux*):
+       Add crtfastmath.o to extra_parts.
        * config/mips/crtfastmath.c: New.
        * config/mips/linux.h (ENDFILE_SPEC): New.
 
 2010-06-11  Joseph Myers  <joseph@codesourcery.com>
 
        * common.opt (Wstrict-aliasing=, Wstrict-overflow=, fabi-version=,
-       flto-compression-level=, ftree-parallelize-loops=): Add
-       RejectNegative.
+       flto-compression-level=, ftree-parallelize-loops=): Add RejectNegative.
 
 2010-06-11  Joseph Myers  <joseph@codesourcery.com>
 
 
        PR target/44481
        * config/i386/i386.md (UNSPEC_PARITY): New unspec.
-       (paritydi2_cmp): Use UNSPEC_PARITY unspec insted of parity RTX.
+       (paritydi2_cmp): Use UNSPEC_PARITY unspec instead of parity RTX.
        (partiysi2_cmp): Ditto.
        (*partiyhi2_cmp): Ditto.
        (*parityqi2_cmp): Remove.
        (bmp_iter_set, bmp_iter_and, bmp_iter_and_compl): Use it.
 
 2010-06-11  Sandra Loosemore  <sandra@codesourcery.com>
-            Eric Botcazou  <ebotcazou@adacore.com>
+           Eric Botcazou  <ebotcazou@adacore.com>
 
        * tree-ssa-loop-ivopts.c (get_computation_cost_at): Return again the
        computed cost.
 2010-05-29  Jan Hubicka  <jh@suse.cz>
 
        * cgraphunit.c (cgraph_materialize_clone): Only remove calles,
-       refs and body; not the whole node for masters of materialized
-       clones.
+       refs and body; not the whole node for masters of materialized clones.
 
 2010-05-29  Mike Stump  <mikestump@comcast.net>
 
        * gcc.c (inform, warning, inform): New functions.
        (fatal_ice): Rename to internal_error; change cmsgid parameter to
        gmsgid.  All callers changed.
-       (notice): Rename to fnotice; add parameter fp.  All callers
-       changed.
+       (notice): Rename to fnotice; add parameter fp.  All callers changed.
        (fatal_error): Rename to fatal_signal.  All users changed.
        (fatal): Rename to fatal_error; change cmsgid parameter to
        gmsgid.  All callers changed.
        (warning): Declare.
        * config/darwin-driver.c (darwin_default_min_version): Use warning
        instead of fprintf for warnings.
-       * cppspec.c (lang_specific_driver): Use fatal_error instead of
-       fatal.
+       * cppspec.c (lang_specific_driver): Use fatal_error instead of fatal.
 
 2010-05-28  Julian Brown  <julian@codesourcery.com>