[Bug debug/47858] [4.5/4.6/4.7 Regression] IPA-SRA decreases quality of debug info

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jun 22 10:43:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47858

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-22 10:42:02 UTC ---
Author: jakub
Date: Wed Jun 22 10:41:58 2011
New Revision: 175288

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=175288
Log:
    PR debug/47858
    * gimple.h (enum gimple_debug_subcode): Add GIMPLE_DEBUG_SOURCE_BIND.
    (gimple_build_debug_source_bind_stat): New prototype.
    (gimple_build_debug_source_bind): Define.
    (gimple_debug_source_bind_p, gimple_debug_source_bind_get_var,
    gimple_debug_source_bind_get_value,
    gimple_debug_source_bind_get_value_ptr,
    gimple_debug_source_bind_set_var,
    gimple_debug_source_bind_set_value): New inlines.
    * gimple.c (gimple_build_debug_source_bind_stat): New function.
    * gimple-pretty-print.c (dump_gimple_debug): Handle
    GIMPLE_DEBUG_SOURCE_BIND.
    * sese.c (rename_uses): Handle gimple_debug_source_bind_p.
    * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
    * tree-parloops.c (eliminate_local_variables,
    separate_decls_in_region): Likewise.
    (separate_decls_in_region_debug): Renamed from
    separate_decls_in_region_debug_bind.  Handle
    gimple_debug_source_bind_p.
    * tree.h (decl_debug_args_lookup, decl_debug_args_insert): New
    prototypes.
    (DECL_HAS_DEBUG_ARGS_P): Define.
    (struct tree_function_decl): Add has_debug_args_flag field.
    * tree.c (debug_args_for_decl): New variable.
    (decl_debug_args_lookup, decl_debug_args_insert): New functions.
    * tree-into-ssa.c (mark_def_sites): Handle uses in debug stmts.
    (rewrite_debug_stmt_uses): New function.
    (rewrite_stmt): Use it to rewrite debug stmt uses.
    * rtl.def (DEBUG_PARAMETER_REF): New.
    * rtl.h (DEBUG_PARAMETER_REF_DECL): Define.
    * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Handle
    DEBUG_PARAMETER_REF.
    * rtl.c (rtx_equal_p_cb, rtx_equal_p, iterative_hash_rtx): Likewise.
    * print-rtl.c (print_rtx): Likewise.
    * tree-sra.c (sra_ipa_reset_debug_stmts): Prefer replacing of
    SSA_NAMEs with DEBUG_EXPR_DECLs initialized in source bind
    debug stmts in the first bb.
    * tree-inline.c (remap_ssa_name): If remapping default def
    of a PARM_DECL fails, map to a DEBUG_EXPR_DECL set in
    a source bind debug stmt.
    (remap_gimple_stmt): Handle gimple_debug_source_bind_p.
    (maybe_move_debug_stmts_to_successors): Likewise.
    (copy_debug_stmt): Likewise.  Avoid shadowing a variable.
    (tree_function_versioning): If DECL_HAS_DEBUG_ARGS_P, copy
    debug args vector from old_decl to new_decl.
    * ipa-prop.c (ipa_modify_call_arguments): For optimized away
    or modified parameters, add debug bind stmts before call
    setting DEBUG_EXPR_DECL which is remembered in debug args
    vector.
    * cfgexpand.c (expand_call_stmt): Call expand_debug_expr
    on DECL_DEBUG_EXPRs from debug args vector.
    (expand_debug_source_expr): New function.
    (expand_debug_locations): Use it for source bind insns.
    (expand_gimple_basic_block): Handle gimple_debug_source_bind_p.
    * var-tracking.c (prepare_call_arguments): Add debug args
    to call_arguments if any.
    * dwarf2out.c (dwarf_stack_op_name, size_of_loc_descr,
    output_loc_operands, output_loc_operands_raw,
    resolve_addr_in_expr, compare_loc_operands): Handle
    DW_OP_GNU_parameter_ref.
    (get_ref_die_offset, parameter_ref_descriptor): New functions.
    (mem_loc_descriptor): Handle DEBUG_PARAMETER_REF.
    (gen_subprogram_die): Handle parameters identified by
    DEBUG_PARAMETER_REF.

    * dwarf2.h (enum dwarf_location_atom): Add DW_OP_GNU_parameter_ref.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgexpand.c
    trunk/gcc/cselib.c
    trunk/gcc/dwarf2out.c
    trunk/gcc/gimple-pretty-print.c
    trunk/gcc/gimple.c
    trunk/gcc/gimple.h
    trunk/gcc/ipa-prop.c
    trunk/gcc/print-rtl.c
    trunk/gcc/rtl.c
    trunk/gcc/rtl.def
    trunk/gcc/rtl.h
    trunk/gcc/sese.c
    trunk/gcc/tree-inline.c
    trunk/gcc/tree-into-ssa.c
    trunk/gcc/tree-parloops.c
    trunk/gcc/tree-sra.c
    trunk/gcc/tree-ssa-dce.c
    trunk/gcc/tree.c
    trunk/gcc/tree.h
    trunk/gcc/var-tracking.c
    trunk/include/ChangeLog
    trunk/include/dwarf2.h



More information about the Gcc-bugs mailing list