OSDN Git Service

dwarf2: Move CFI output routines to dwarf2cfi.c.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index f840e57..436e037 100644 (file)
@@ -1,3 +1,432 @@
+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.
        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>