OSDN Git Service

dwarf2: Move CFI output routines to dwarf2cfi.c.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 3156a9b..436e037 100644 (file)
@@ -1,3 +1,765 @@
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * defaults.h (DWARF2_ADDR_SIZE, DWARF_OFFSET_SIZE,
+       DWARF_TYPE_SIGNATURE_SIZE): Move from ...
+       * dwarf2out.c: ... here.
+       (output_all_cfis): Remove.
+       (dwarf2out_switch_text_section): Use output_cfis directly.
+       (size_of_locs): Export.
+       (output_loc_sequence, output_loc_sequence_raw): Export.
+       (div_data_align, need_data_align_sf_opcode, dwarf_cfi_name, output_cfi,
+       output_cfi_directive, dwarf2out_emit_cfi, output_cfis, output_cfa_loc,
+       output_cfa_loc_raw): Move to ...
+       * dwarfcfi.c: ... here.
+       * dwarf2out.h: Update decls.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * defaults.h (DWARF_CIE_DATA_ALIGNMENT, DWARF_FRAME_RETURN_COLUMN,
+       DWARF_FRAME_REGNUM, DWARF2_FRAME_REG_OUT): Move from ...
+       * dwarf2cfi.c: ... here.
+       (PTR_SIZE, DWARF_OFFSET_SIZE, DWARF_INITIAL_LENGTH_SIZE): Remove.
+       (DWARF_ROUND, DWARF_CIE_ID): Remove.
+       * dwarf2out.c (INCOMING_RETURN_ADDR_RTX): Remove.
+       (DWARF2_FRAME_REG_OUT, DWARF_CIE_DATA_ALIGNMENT): Remove.
+       (DWARF_FRAME_RETURN_COLUMN, DWARF_FRAME_REGNUM): Remove.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c (cie_return_save): New.
+       (queue_reg_save): Use compare_reg_or_pc.
+       (dwarf2out_flush_queued_reg_saves): Handle pc_rtx as return column.
+       (dwarf2out_frame_debug_expr): Likewise.
+       (dwarf2out_frame_debug_cfa_register): Record saved reg for pc too.
+       (initial_return_save): Likewise.
+       (execute_dwarf2_frame): Save and restore initial return save from
+       the cie to the fde.
+       * config/mips/mips.c (mips_frame_set): Remove special case for
+       DWARF_FRAME_RETURN_COLUMN.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c (lookup_cfa): Remove.
+       (execute_dwarf2_frame): Assert queues are empty on entry.
+       Setup initial cfa directly, not via lookup_cfa.
+       Don't clear args_size state here.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c (add_cfi_vec): New.
+       (add_cfi): Rename from add_fde_cfi.  Add the element to add_cfi_vec.
+       (def_cfa_1, reg_save): Remove for_cie argument.  Update all callers.
+       (execute_dwarf2_frame): Set add_cfi_vec.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * defaults.h (ASM_COMMENT_START): Move here...
+       * dwarf2asm.c: ... from here.
+       * dwarf2out.c, final.c, vmsdbgout.c: Remove duplicates.
+       * toplev.c: Remove ifndef tests of ASM_COMMENT_START.
+       * varasm.c: Likewise.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       PR debug/49686
+       * dwarf2cfi.c (dwarf2out_frame_debug): Don't set cfi_insn here...
+       (create_cfi_notes): ... do it here instead.
+
+2011-07-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/49676
+       * dwarf2out.c (size_of_int_loc_descriptor): New function.
+       (address_of_int_loc_descriptor): Use it.
+       (scompare_loc_descriptor): Optimize EQ/NE comparison with
+       constant.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * config/pdp11/pdp11.md (define_c_enum "unspecv"): New.
+       (prologue, epilogue): New.
+       (return, *rts): New.
+       (blockage, setd, seti): New.
+       * config/pdp11/pdp11.c (TARGET_ASM_FUNCTION_PROLOGUE): Remove.
+       (TARGET_ASM_FUNCTION_EPILOGUE): Remove.
+       (pdp11_saved_regno): New.
+       (pdp11_expand_prologue): Rename from pdp11_output_function_prologue;
+       generate rtl instead of text.
+       (pdp11_expand_epilogue): Similarly from pdp11_output_function_epilogue.
+       (pdp11_sp_frame_offset): Export.  Use pdp11_saved_regno.
+       * config/pdp11/pdp11-protos.h: Update.
+
+2011-07-09  Richard Henderson  <rth@redhat.com>
+
+       * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
+       try to insert an rtl prologue here.
+       (rs6000_output_function_epilogue): Similarly.
+       * config/rs6000/rs6000.md (prologue): Emit a barrier to
+       satisfy !TARGET_SCHED_PROLOG.
+       (epilogue, sibcall_epilogue): Likewise.
+
+2011-07-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.h (STACK_SAVEAREA_MODE): Move around.
+       (FP_REG_P): Delete.
+       (IN_OR_GLOBAL_P): Likewise.
+
+2011-07-08  Jason Merrill  <jason@redhat.com>
+
+       PR c++/45437
+       * gimplify.c (goa_stabilize_expr): Handle RHS preevaluation in
+       compound assignment.
+
+       * cgraph.c (cgraph_add_to_same_comdat_group): New.
+       * cgraph.h: Declare it.
+       * ipa.c (function_and_variable_visibility): Make sure thunks
+       have the right visibility.
+
+2011-07-08  Richard Henderson  <rth@redhat.com>
+
+       PR bootstrap/49680
+       * dwarf2cfi.c (dwarf2out_frame_debug): Insert cfi notes after
+       any tablejump vector.
+
+       PR bootstrap/49680
+       * dwarf2cfi.c (create_cfi_notes): Flush queued saves at the
+       end of the prologue.
+
+2011-07-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/49621
+       * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use
+       CONST0_RTX (dest_mode) instead of const0_rtx as second operand
+       of NE.
+       * config/rs6000/vector.md (vector_select_<mode>,
+       vector_select_<mode>_uns): Change second operand of NE to
+       CONST0_RTX (<MODE>mode) instead of const0_rtx.
+       * config/rs6000/altivec.md (*altivec_vsel<mode>,
+       *altivec_vsel<mode>_uns): Expect second operand of NE to be
+       zero_constant of the corresponding vector mode.
+       * config/rs6000/vsx.md (*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns):
+       Likewise.
+
+2011-07-08  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (build_alias_set_powerset): Remove
+       continue from loop, add one more assert.
+
+2011-07-08  Georg-Johann Lay  <avr@gjlay.de>
+       
+       PR target/46779
+       * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
+       In particular, allow 8-bit values in r28 and r29.
+       (avr_hard_regno_scratch_ok): Disallow any register that might be
+       part of the frame pointer.
+       (avr_hard_regno_rename_ok): Same.
+       (avr_legitimate_address_p): Don't allow SUBREGs.
+
+2011-07-08  Julian Brown  <julian@codesourcery.com>
+
+       * config/arm/neon.md (vec_shr_<mode>, vec_shl_<mode>): Disable in
+       big-endian mode.
+       (reduc_splus_<mode>, reduc_uplus_<mode>, reduc_smin_<mode>)
+       (reduc_smax_<mode>, reduc_umin_<mode>, reduc_umax_<mode>)
+       (neon_vec_unpack<US>_lo_<mode>, neon_vec_unpack<US>_hi_<mode>)
+       (vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>)
+       (neon_vec_<US>mult_lo_<mode>, vec_widen_<US>mult_lo_<mode>)
+       (neon_vec_<US>mult_hi_<mode>, vec_widen_<US>mult_hi_<mode>)
+       (vec_pack_trunc_<mode>, neon_vec_pack_trunc_<mode>): Disable for Q
+       registers in big-endian mode.
+
+2011-07-08  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * genattrtab.c (evaluate_eq_attr): Allow an attribute to be defined
+       in terms of another.
+       (write_attr_value): Write a cast if necessary.
+
+       * defaults.h (REG_WORDS_BIG_ENDIAN): Provide a default.
+       * doc/tm.texi.in (WORDS_BIG_ENDIAN): Mention REG_WORDS_BIG_ENDIAN.
+       (REG_WORDS_BIG_ENDIAN): Document.
+       * doc/tm.texi: Regenerate.
+       * reload.c (operands_match_p): Take it into account.
+       (reload_adjust_reg_for_mode): Likewise.
+       * rtlanal.c (subreg_get_info): Likewise.
+
+2011-07-08  Richard Guenther  <rguenther@suse.de>
+
+       * fold-const.c (fold_binary_loc): Remove index +p PTR -> PTR +p index
+       folding.
+
+2011-07-08  Kai Tietz  <ktietz@redhat.com>
+
+       * fold-const.c (fold_truth_andor): Factored out truth_andor
+       label from fold_binary as function.
+       (fold_binary_loc): Replace truth_andor lable
+       by function fold_truth_andor.
+
+2011-07-08  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR middle-end/49519
+       * calls.c (mem_overlaps_already_clobbered_arg_p): Additional
+       check if address is stored in register. If so - give up.
+       (check_sibcall_argument_overlap_1): Do not perform check of
+       overlapping when it is call to address.
+
+2011-07-08  Georg-Johann Lay  <avr@gjlay.de>
+
+       * config/avr/avr.c (output_reload_insisf): Use 'REG_Z+1' instead
+       of magic '31'.
+
+2011-07-08  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * optabs.c (expand_binop): Use GET_MODE_PRECISION instead of
+       GET_MODE_BITSIZE where appropriate.
+       (widen_leading, expand_parity, expand_ctz, expand_ffs,
+       expand_unop, expand_abs_nojump, expand_one_cmpl_abs_nojump,
+       expand_float, expand_fix): Likewise.
+       * expr.c (convert_move, convert_modes, expand_expr_real_2,
+       expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
+       * stor-layout.c (get_mode_bounds): Likewise.
+       * cfgexpand.c (convert_debug_memory_address, expand_debug_expr):
+       Likewise.
+       * convert.c (convert_to_integer): Likewise.
+       * expmed.c (expand_shift_1): Likewise.
+
+       * rtlanal.c (nonzero_bits1): Don't compare GET_MODE_SIZE against
+       a bitsize.
+
+       * optabs.c (expand_binop): Tighten conditions for doubleword
+       expansions.
+       (widen_bswap): Assert that mode bitsize and precision are the
+       same.
+       * stor-layout.c (get_best_mode): Skip modes that have lower
+       precision than bitsize.
+       * recog.c (simplify_while_replacing): Assert that bitsize and
+       precision are the same.
+
+2011-07-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * Makefile.in (LIBGCOV): Remove.
+       (libgcc.mvars): Remove LIBGCOV.
+       * libgov.c: Move to ../libgcc.
+
+2011-07-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/fixed-bit.c, config/fixed-bit.h: Move to ../libgcc.
+
+2011-07-08  Martin Jambor  <mjambor@suse.cz>
+
+       * tree-sra.c (analyze_all_variable_accesses): Dump that a struture
+       is too big for total scalarization.
+
+2011-07-07  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/elf.h (MIPS_DEBUGGING_INFO): Undef.
+       (DBX_DEBUGGING_INFO): Undef.
+
+2011-07-07  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2out.c (output_cfi_directive): Export.  Add FILE parameter.
+       Handle some opcodes specially for debugging.
+       * print-rtl.c: Include dwarf2out.h
+       (print_rtx): Handle NOTE_INSN_CFI.
+       * Makefile.in (print-rtl.o): Update.
+
+2011-07-07  Richard Henderson  <rth@redhat.com>
+
+       * tree-pass.h (pass_dwarf2_frame): Declare.
+       * passes.c (init_optimization_passes): Add it.
+       * dwarf2cfi.c (dwarf2out_frame_debug): Make static.
+       (create_cfi_notes): Rename from dwarf2out_frame_debug_after_prologue;
+       make static, do not call add_cfis_to_fde.
+       (dwarf2out_frame_debug_init, dwarf2cfi_function_init,
+       dwarf2out_frame_init): Merge into...
+       (execute_dwarf2_frame): ... here.  New function.
+       (dwarf2out_do_frame, dwarf2out_do_cfi_asm): Make boolean.  Change
+       saved_do_cfi_asm to a tri-state variable.
+       (gate_dwarf2_frame, pass_dwarf2_frame): New.
+       * dwarf2out.c (dwarf2out_begin_prologue): Only allocate the fde
+       if it has yet to be done.  Don't call dwarf2cfi_function_init.
+       * dwarf2out.h, debug.h: Update decls.
+       * final.c (final_start_function): Don't call
+       dwarf2out_frame_debug_init or dwarf2out_frame_debug_after_prologue.
+       * lto-streamer-in.c (lto_init_eh): Don't call dwarf2out_frame_init.
+       * toplev.c (lang_dependent_init): Likewise.
+
+2011-07-07  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2out.c (fde_table, fde_table_allocated, fde_table_in_use,
+       FDE_TABLE_INCREMENT): Replace with...
+       (fde_vec): ... this, a new vector.
+       (current_fde): Remove.  Replace all users with cfun->fde.
+       (output_call_frame_info): Use FOR_EACH_VEC_ELT over fde_vec.
+       (size_of_aranges, dwarf2out_finish): Likewise.
+       (dwarf2out_alloc_current_fde): Break out from ...
+       (dwarf2out_begin_prologue): ... here.
+       (dwarf2out_frame_init): Remove.
+       * dwarf2cfi.c: Update all users of current_fde.
+       (dwarf2out_frame_init): Rename from dwarf2cfi_frame_init.
+       * dwarf2out.h: Update decls.
+       (dw_fde_node): Add fde_index member.
+       * function.h (struct function): Add fde member.
+
+2011-07-07  Bernd Schmidt  <bernds@codesourcery.com>
+           Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c (add_cfi): Remove.
+       (dwarf2out_cfi_label): Remove force argument.  Only generate the
+       label name.
+       (add_fde_cfi): Simplify the different code paths.
+       (add_cie_cfi): New.
+       (old_cfa, old_cfa_remember): New.
+       (def_cfa_1, reg_save): Remove label, add for_cie parameter.
+       (last_reg_save_label): Remove.
+       (dwarf2out_args_size, dwarf2out_stack_adjust, queue_reg_save,
+       dwarf2out_frame_debug_def_cfa, dwarf2out_frame_debug_adjust_cfa,
+       dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_cfa_register,
+       dwarf2out_frame_debug_cfa_expression,
+       dwarf2out_frame_debug_cfa_restore,
+       dwarf2out_frame_debug_cfa_window_save,
+       dwarf2out_frame_debug_expr): Remove label parameter.
+       (cfi_label_required_p, add_cfis_to_fde): New.
+       (dwarf2out_frame_debug_after_prologue): New.
+       (dwarf2cfi_frame_init): Initialize old_cfa.
+       (dwarf2out_frame_debug_restore_state): Likewise.
+       * dwarf2out.c (dwarf2out_emit_cfi): Only do output for cfi_asm.
+       (dwarf2out_switch_text_section): Don't clear dw_fde_current_label here.
+       * final.c (final_start_function): Call
+       dwarf2out_frame_debug_after_prologue.
+
+2011-07-07  Bernd Schmidt  <bernds@codesourcery.com>
+           Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c (cfi_insn): New.
+       (dwarf2out_cfi_label): Don't emit cfi label here.
+       (add_fde_cfi): Create a NOTE_INSN_CFI.
+       (dwarf2out_frame_debug): Setup cfi_insn.
+       (dwarf2out_frame_debug_init): Loop over insns creating CFI notes.
+       (dwarf2out_cfi_begin_epilogue): Make static.
+       (dwarf2out_frame_debug_restore_state): Make static.
+       * dwarf2out.c (output_cfi_directive): Make static.
+       (dwarf2out_emit_cfi): New.
+       * dwarf2out.h: Update.
+       * final.c (final): Remove CFI notes.
+       (final_scan_insn): Don't call dwarf2out_cfi_begin_epilogue,
+       dwarf2out_frame_debug_restore_state, dwarf2out_frame_debug.
+       Handle NOTE_INSN_CFI and NOTE_INSN_CFI_LABEL.
+       * insn-notes.def (NOTE_INSN_CFI): New.
+       (NOTE_INSN_CFI_LABEL): New.
+       * rtl.h (union rtunion_def): Add rt_cfi member.
+       (XCFI, XCCFI, NOTE_CFI, NOTE_LABEL_NUMBER): New.
+
+2011-07-07  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2cfi.c: New file.
+       * Makefile.in (OBJS): Add it.
+       (GTFILES): Add dwarf2cfi.c and dwarf2out.h.
+       * gengtype.c (open_base_files): Include dwarf2out.h.
+       * coretypes.h (enum var_init_status): Move from ...
+       * rtl.h: ... here.
+       * dwarf2out.c (saved_do_cfi_asm, dwarf2out_do_frame,
+       dwarf2out_do_cfi_asm, cie_cfi_vec, dwarf2out_cfi_label_num,
+       expand_builtin_dwarf_sp_column, init_return_column_size,
+       expand_builtin_init_dwarf_reg_sizes, new_cfi, add_cfi,
+       dwarf2out_cfi_label, emit_cfa_remember, any_cfis_emitted, add_fde_cfi,
+       lookup_cfa_1, lookup_cfa, cfa, cfa_store, cfa_remember, args_size,
+       old_args_size, cfa_equal_p, def_cfa_1, reg_save, initial_return_save,
+       stack_adjust_offset, barrier_args_size, compute_barrier_args_size_1,
+       compute_barrier_args_size, dwarf2out_args_size,
+       dwarf2out_stack_adjust, dwarf2out_notice_stack_adjust,
+       queued_reg_saves, reg_saved_in_data, regs_saved_in_regs,
+       compare_reg_or_pc, record_reg_saved_in_reg, last_reg_save_label,
+       queue_reg_save, dwarf2out_flush_queued_reg_saves,
+       clobbers_queued_reg_save, reg_saved_in, cfa_temp,
+       dwarf2out_frame_debug_def_cfa, dwarf2out_frame_debug_adjust_cfa,
+       dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_cfa_register,
+       dwarf2out_frame_debug_cfa_expression,
+       dwarf2out_frame_debug_cfa_restore,
+       dwarf2out_frame_debug_cfa_window_save, dwarf2out_frame_debug_expr,
+       dwarf2out_frame_debug, dwarf2out_frame_debug_init,
+       dwarf2out_cfi_begin_epilogue, dwarf2out_frame_debug_restore_state,
+       get_cfa_from_loc_descr): Move to dwarf2cfi.c.
+       (dw_cfi_ref, dw_fde_ref, dw_cfi_oprnd_ref, enum dw_cfi_oprnd_type,
+       dw_cfi_oprnd, dw_cfi_node, cfi_vec, dw_cfa_location, dw_fde_node,
+       dw_val_ref, dw_die_ref, const_dw_die_ref, dw_loc_descr_ref,
+       dw_loc_list_ref, enum dw_val_class, dw_vec_const, dw_val_node,
+       dw_loc_descr_node): Move to dwarf2out.h.
+       (current_fde, output_cfi_directive, build_cfa_loc, get_address_mode,
+       mem_loc_descriptor): Export.
+       (build_cfa_aligned_loc): Export.  Take CFA as a parameter.
+       (dwarf2out_frame_init): Extract CIE generation code to
+       dwarf2cfi_frame_init.
+
+2011-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/49660
+       * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add
+       MASK_V8PLUS, remove commented out flag and reorder.
+
+2011-07-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/49644
+       * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
+       one non-complex and one complex argument, call c_save_expr on both
+       operands.
+
+2011-07-07  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/49495
+       * cgraphunit.c (verify_edge_corresponds_to_fndecl): New function.
+       (verify_cgraph_node): Some functinality moved to
+       verify_edge_corresponds_to_fndecl, call it.
+
+2011-07-07  Joseph Myers  <joseph@codesourcery.com>
+
+       * config.gcc (*local*): Remove.
+       * doc/install-old.texi: Don't mention local configurations.
+
+2011-07-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/49522
+       * df-problems.c (dead_debug_reset): Remove dead_debug_uses
+       referencing debug insns that have been reset.
+       (dead_debug_insert_before): Don't assert reg is non-NULL,
+       instead return immediately if it is NULL.
+
+2011-07-07  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/i386/t-crtpic, config/i386/t-svr3dbx, config/pa/t-pa:
+       Remove.
+
+2011-07-07  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * hw-doloop.c: New file.
+       * hw-doloop.h: New file.
+       * Makefile.in (OBJS): Add hw-doloop.o.
+       (hw-doloop.o): New rule.
+       ($(obj_out_file)): Add hw-doloop.h dependency.
+       * config/bfin/bfin.c: Include "hw-doloop.h".
+       (loop_info, DEF_VEC_P for loop_info, loop_info_d): Remove.
+       (bfin_dump_loops, bfin_bb_in_loop, bfin_scan_loop): Remove.
+       (hwloop_optimize): Renamed from bfin_optimize_loop.  Argument
+       type changed to hwloop_info.  Return bool, true if the loop was
+       successfully optimized.  Remove code that was moved to
+       hw-doloop.c, and adjust other parts.
+       (hwloop_fail): New static function, containing parts that used
+       to be in bfin_optimize_loop.
+       (bfin_discover_loop, bfin_discover_loops, free_loops,
+       bfin_reorder_loops): Remove.
+       (hwloop_pattern_reg): New static function.
+       (bfin_doloop_hooks): New variable.
+       (bfin_reorg_loops): Remove most code, call reorg_loops.
+       * config/bfin/bfin.md (doloop_end splitter): Also enable if
+       loop counter is a memory_operand.
+
+2011-07-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config.gcc: Support --with-multilib-list for x86 Linux
+       targets.
+
+       * configure.ac: Mention x86-64 for --with-multilib-list.
+       * configure: Regenerated.
+
+       * config/i386/gnu-user64.h (SPEC_64): Support x32.
+       (SPEC_32): Likewise.
+       (ASM_SPEC): Likewise.
+       (LINK_SPEC): Likewise.
+       (TARGET_THREAD_SSP_OFFSET): Likewise.
+       (TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise.
+       (SPEC_X32): New.
+
+       * config/i386/i386.h (TARGET_X32): New.
+       (TARGET_LP64): New.
+       (LONG_TYPE_SIZE): Likewise.
+       (POINTER_SIZE): Likewise.
+       (POINTERS_EXTEND_UNSIGNED): Likewise.
+       (OPT_ARCH64): Support x32.
+       (OPT_ARCH32): Likewise.
+
+       * config/i386/i386.opt (mx32): New.
+
+       * config/i386/kfreebsd-gnu64.h (GNU_USER_LINK_EMULATIONX32): New.
+       (GLIBC_DYNAMIC_LINKERX32): Likewise.
+       * config/i386/linux64.h (GNU_USER_LINK_EMULATIONX32): Likewise.
+       (GLIBC_DYNAMIC_LINKERX32): Likewise.
+
+       * config/linux.h (UCLIBC_DYNAMIC_LINKERX32): New.
+       (BIONIC_DYNAMIC_LINKERX32): Likewise.
+       (GNU_USER_DYNAMIC_LINKERX32): Likewise.
+
+       * config/i386/t-linux64: Support TM_MULTILIB_CONFIG.
+
+       * doc/install.texi: Document --with-multilib-list for
+       Linux/x86-64.
+
+       * doc/invoke.texi: Document -mx32.
+
+2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * doc/invoke.texi (mwords-little-endian): Deprecate.
+       * config/arm/arm.opt (mwords-little-endian): Likewise.
+       * config/arm/arm.c (arm_option_override): Warn about the deprecation
+       of -mwords-little-endian.
+
+2011-07-07  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * reload1.c (choose_reload_regs): Use mode sizes to check whether
+       an old reload register completely defines the required value.
+
+2011-07-07  Richard Guenther  <rguenther@suse.de>
+
+       * fold-const.c (fold_unary_loc): Do not strip sign-changes
+       for NEGATE_EXPR.
+
+2011-07-07  Richard Guenther  <rguenther@suse.de>
+
+       * tree-vrp.c (simplify_conversion_using_ranges): New function.
+       (simplify_stmt_using_ranges): Call it.
+
+2011-07-07  Kai Tietz  <ktietz@redhat.com>
+
+       * tree-ssa-forwprop.c (truth_valued_ssa_name): New function.
+       (lookup_logical_inverted_value): Likewise.
+       (simplify_bitwise_binary_1): Likewise.
+       (simplify_bitwise_binary): Use simplify_bitwise_binary_1.
+
+2011-07-07  Joseph Myers  <joseph@codesourcery.com>
+
+       * gcc.c (%[Spec]): Don't document.
+       (struct spec_list): Update comment.
+       (do_spec_1): Don't handle %[Spec].
+       * doc/invoke.texi (%[@var{name}]): Remove documentation of spec.
+
+2011-07-07  Joseph Myers  <joseph@codesourcery.com>
+
+       * common/common-target-def.h (TARGET_HAVE_NAMED_SECTIONS): Don't
+       default based on TARGET_ASM_NAMED_SECTION.
+       * common/common-target.def (have_named_sections): Default to true.
+       * common/config/default-common.c: Don't include tm.h.
+       * common/config/picochip/picochip-common.c
+       (TARGET_HAVE_NAMED_SECTIONS): Don't define.
+       * common/config/m32c/m32c-common.c: Remove.
+       * config.gcc (m32c*-*-*): Set target_has_targetm_common=no.
+       * config/alpha/osf5.h (TARGET_HAVE_NAMED_SECTIONS): Define to
+       false.
+       * config/i386/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
+       false.
+       * config/m68k/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
+       false.
+       * config/pa/som.h (TARGET_HAVE_NAMED_SECTIONS): Define to false.
+       * config/pdp11/pdp11.h (TARGET_HAVE_NAMED_SECTIONS): Define to
+       false.
+       * config/vax/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
+       false.
+
+2011-07-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/49640
+       * gimplify.c (gimplify_compound_lval): For last 2 ARRAY_*REF
+       operands and last COMPONENT_REF operand call gimplify_expr on it
+       if non-NULL.
+
+2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR libmudflap/49550
+       * gcc.c (MFWRAP_SPEC): Also wrap mmap64.
+
+2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR target/39150
+       * configure.ac (gcc_cv_as_hidden): Also accept
+       x86_64-*-solaris2.1[0-9]*.
+       (gcc_cv_as_cfi_directive): Likewise.
+       (gcc_cv_as_comdat_group_group): Likewise.
+       (set_have_as_tls): Likewise.
+       * configure: Regenerate.
+       * config.gcc (i[34567]86-*-solaris2*): Also handle
+       x86_64-*-solaris2.1[0-9]*.
+       * config.host (i[34567]86-*-solaris2*): Likewise.
+       * config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Remove.
+       * config/sol2-bi.h (ASM_CPU_DEFAULT_SPEC): Redefine.
+       [USE_GLD] (ARCH_DEFAULT_EMULATION): Define.
+       (TARGET_LD_EMULATION): Use it.
+       * config/i386/sol2.h (ASM_CPU_DEFAULT_SPEC): Define.
+       (SUBTARGET_CPU_EXTRA_SPECS): Add asm_cpu_default.
+       * config/i386/sol2-bi.h (ASM_CPU32_DEFAULT_SPEC): Define.
+       (ASM_CPU64_DEFAULT_SPEC): Define.
+       (ASM_CPU_SPEC): Use %(asm_cpu_default).
+       (ASM_SPEC): Redefine.
+       (DEFAULT_ARCH32_P): Define using TARGET_64BIT_DEFAULT.
+       * config/host-solaris.c [__x86_64__] (TRY_EMPTY_VM_SPACE): Reduce.
+       * doc/install.texi (Specific, amd64-*-solaris2.1[0-9]*):
+       Document.
+       (Specific, i?86-*-solaris2.10): Mention x86_64-*-solaris2.1[0-9]*
+       configuration.
+       (Specific, x86_64-*-solaris2.1[0-9]*): Document.
+
+2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/sol2.h (ASM_SPEC): Split into ...
+       (ASM_SPEC_BASE, ASM_PIC_SPEC): ... this.
+       * config/i386/sol2.h (ASM_SPEC): Define using ASM_SPEC_BASE.
+       * config/i386/sol2-bi.h (ASM_CPU_SPEC): Redefine.
+       (ASM_SPEC): Use ASM_SPEC_BASE.
+       * config/sparc/sol2.h (ASM_SPEC): Redefine.
+
+2011-07-07  Georg-Johann Lay  <avr@gjlay.de>
+       
+       * config/avr/avr.md (*reload_insi): Change predicate #1 to
+       const_int_operand.  Ditto for peep2 producing this insn.
+       Add argument to output_reload_insisf call.
+       (*movsi,*movsf): Add argument to output_movsisf call.
+       (*reload_insf): New insn and new peep2 to produce it.
+       * config/avr/avr-protos.h (output_movsisf): Change prototype.
+       (output_reload_insisf): Change prototype.
+       * config/avr/avr.c (avr_asm_len): New function.
+       (output_reload_insisf): Rewrite.
+       (output_movsisf): Change prototype.  output_reload_insisf for
+       all CONST_INT and CONST_DOUBLE.  ALlow moving 0.0f to memory.
+       (adjust_insn_length): Add argument to output_movsisf and
+       output_reload_insisf call.
+
+2011-07-07  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * emit-rtl.c (paradoxical_subreg_p): New function.
+       * rtl.h (paradoxical_subreg_p): Declare.
+       * combine.c (set_nonzero_bits_and_sign_copies, get_last_value,
+       apply_distributive_law, simplify_comparison, simplify_set): Use it.
+       * cse.c (record_jump_cond, cse_insn): Likewise.
+       * expr.c (force_operand): Likewise.
+       * rtlanal.c (num_sign_bit_copies1): Likewise.
+       * reload1.c (eliminate_regs_1, strip_paradoxical_subreg): Likewise.
+       * reload.c (push_secondary_reload, find_reloads_toplev): Likewise.
+       (push_reload): Use precision to check for paradoxical subregs.
+       * expmed.c (extract_bit_field_1): Likewise.
+
+       * machmode.h (HWI_COMPUTABLE_MODE_P): New macro.
+       * combine.c (set_nonzero_bits_and_sign_copies): Use it.
+       (find_split-point, combine_simplify_rtx, simplify_if_then_else,
+       simplify_set, simplify_logical, expand_compound_operation,
+       make_extraction, force_to_mode, if_then_else_cond, extended_count,
+       try_widen_shift_mode, simplify_shift_const_1, simplify_comparison,
+       record_value_for_reg): Likewise.
+       * expmed.c (expand_widening_mult, expand_mult_highpart): Likewise.
+       * simplify-rtx. c (simplify_unary_operation_1,
+       simplify_binary_operation_1, simplify_const_relational_operation):
+       Likewise.
+
+       * explow.c (trunc_int_for_mode): Use GET_MODE_PRECISION
+       instead of GET_MODE_BITSIZE where appropriate.
+       * rtlanal.c (subreg_lsb_1, subreg_get_info, nonzero_bits1,
+       num_sign_bit_copies1, canonicalize_condition, low_bitmask_len,
+       init_num_sign_bit_copies_in_rep): Likewise.
+       * cse.c (fold_rtx, cse_insn): Likewise.
+       * loop-doloop.c (doloop_modify, doloop_optimize): Likewise.
+       * simplify-rtx.c (simplify_unary_operation_1,
+       simplify_const_unary_operation, simplify_binary_operation_1,
+       simplify_const_binary_operation, simplify_ternary_operation,
+       simplify_const_relational_operation, simplify_subreg): Likewise.
+       * combine.c (try_combine, find_split_point, combine_simplify_rtx,
+       simplify_if_then_else, simplify_set, expand_compound_operation,
+       expand_field_assignment, make_extraction, if_then_else_cond,
+       make_compound_operation, force_to_mode, make_field_assignment,
+       reg_nonzero_bits_for_combine, reg_num_sign_bit_copies_for_combine,
+       extended_count, try_widen_shift_mode, simplify_shift_const_1,
+       simplify_comparison, record_promoted_value, simplify_compare_const,
+       record_dead_and_set_regs_1): Likewise.
+
+       Revert:
+       * simplify-rtx.c (simplify_const_binary_operation): Use the
+       shift_truncation_mask hook instead of performing modulo by
+       width.  Compare against mode precision, not bitsize.
+       * combine.c (combine_simplify_rtx, simplify_shift_const_1):
+       Use shift_truncation_mask instead of constructing the value
+       manually.
+
+2011-07-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       * config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): New
+       declaration.
+       (rs6000_save_toc_in_prologue_p): Ditto.
+
+       * config/rs6000/rs6000.opt (-mr11): New switch to disable loading
+       up the static chain (r11) during indirect function calls.
+       (-msave-toc-indirect): New undocumented debug switch.
+
+       * config/rs6000/rs6000.c (struct machine_function): Add
+       save_toc_in_prologue field to note whether the prologue needs to
+       save the TOC value in the reserved stack location.
+       (rs6000_emit_prologue): Use TOC_REGNUM instead of 2.  If we need
+       to save the TOC in the prologue, do so.
+       (rs6000_trampoline_init): Don't allow creating AIX style
+       trampolines if -mno-r11 is in effect.
+       (rs6000_call_indirect_aix): New function to create AIX style
+       indirect calls, adding support for -mno-r11 to suppress loading
+       the static chain, and saving the TOC in the prologue instead of
+       the call body.
+       (rs6000_save_toc_in_prologue_p): Return true if we are saving the
+       TOC in the prologue.
+
+       * config/rs6000/rs6000.md (STACK_POINTER_REGNUM): Add more fixed
+       register numbers.
+       (TOC_REGNUM): Ditto.
+       (STATIC_CHAIN_REGNUM): Ditto.
+       (ARG_POINTER_REGNUM): Ditto.
+       (SFP_REGNO): Delete, unused.
+       (TOC_SAVE_OFFSET_32BIT): Add constants for AIX TOC save and
+       function descriptor offsets.
+       (TOC_SAVE_OFFSET_64BIT): Ditto.
+       (AIX_FUNC_DESC_TOC_32BIT): Ditto.
+       (AIX_FUNC_DESC_TOC_64BIT): Ditto.
+       (AIX_FUNC_DESC_SC_32BIT): Ditto.
+       (AIX_FUNC_DESC_SC_64BIT): Ditto.
+       (ptrload): New mode attribute for the appropriate load of a
+       pointer.
+       (call_indirect_aix32): Delete, rewrite AIX indirect function
+       calls.
+       (call_indirect_aix64): Ditto.
+       (call_value_indirect_aix32): Ditto.
+       (call_value_indirect_aix64): Ditto.
+       (call_indirect_nonlocal_aix32_internal): Ditto.
+       (call_indirect_nonlocal_aix32): Ditto.
+       (call_indirect_nonlocal_aix64_internal): Ditto.
+       (call_indirect_nonlocal_aix64): Ditto.
+       (call): Rewrite AIX indirect function calls.  Add support for
+       eliminating the static chain, and for moving the save of the TOC
+       to the function prologue.
+       (call_value): Ditto.
+       (call_indirect_aix<ptrsize>): Ditto.
+       (call_indirect_aix<ptrsize>_internal): Ditto.
+       (call_indirect_aix<ptrsize>_internal2): Ditto.
+       (call_indirect_aix<ptrsize>_nor11): Ditto.
+       (call_value_indirect_aix<ptrsize>): Ditto.
+       (call_value_indirect_aix<ptrsize>_internal): Ditto.
+       (call_value_indirect_aix<ptrsize>_internal2): Ditto.
+       (call_value_indirect_aix<ptrsize>_nor11): Ditto.
+       (call_nonlocal_aix32): Relocate in the rs6000.md file.
+       (call_nonlocal_aix64): Ditto.
+
+       * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mr11 and
+       -mno-r11 documentation.
+
+2011-07-06  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR other/49658
+       * doc/extend.texi (Compound Literals): Fix typo.
+
+2011-07-06  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add
+       __ARM_FEATURE_DSP.
+
+2011-07-06  Basile Starynkevitch  <basile@starynkevitch.net>
+
+       * configure.ac (plugin-version.h): Generate
+       GCCPLUGIN_VERSION_MAJOR, GCCPLUGIN_VERSION_MINOR,
+       GCCPLUGIN_VERSION_PATCHLEVEL, GCCPLUGIN_VERSION constant integer
+       macros.
+
+       * configure: Regenerate.
+
+       * doc/plugins.texi (Building GCC plugins): Mention
+       GCCPLUGIN_VERSION ... constant macros in plugin-version.h.
+
 2011-07-06  Bernd Schmidt  <bernds@codesourcery.com>
 
        * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): New macro.
        PR tree-optimization/49580
        * tree-cfg.c (gimple_duplicate_sese_tail): Remove handling of 
        the loop's number of iterations.
-        * tree-parloops.c (transform_to_exit_first_loop): Add the 
+       * tree-parloops.c (transform_to_exit_first_loop): Add the 
        handling of the loop's number of iterations before the call 
        to gimple_duplicate_sese_tail.
-        Insert the stmt caclculating the new rhs of the loop's
+       Insert the stmt caclculating the new rhs of the loop's
        condition stmt to the preheader instead of iters_bb.
 
 2011-07-05  H.J. Lu  <hongjiu.lu@intel.com>