X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdebug.h;h=cdaf457cb4c47bb31afee272353bed0e3d554622;hb=c470c5a9c593390d0bf3f4a6004c136b99120545;hp=6cdf7863a25a753a524bd43e73371475009631a7;hpb=3dcd5df11c166b18d445c366cd57d6245391df2e;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/debug.h b/gcc/debug.h index 6cdf7863a25..cdaf457cb4c 100644 --- a/gcc/debug.h +++ b/gcc/debug.h @@ -1,5 +1,6 @@ /* Debug hooks for GCC. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2010 + Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -30,6 +31,10 @@ struct gcc_debug_hooks /* Output debug symbols. */ void (* finish) (const char *main_filename); + /* Called from cgraph_optimize before starting to assemble + functions/variables/toplevel asms. */ + void (* assembly_start) (void); + /* Macro defined on line LINE with name and expansion TEXT. */ void (* define) (unsigned int line, const char *text); @@ -58,18 +63,21 @@ struct gcc_debug_hooks though the BLOCK information is messed up. Defaults to true. */ bool (* ignore_block) (const_tree); - /* Record a source file location at (FILE, LINE). */ - void (* source_line) (unsigned int line, const char *file); + /* Record a source file location at (FILE, LINE, DISCRIMINATOR). */ + void (* source_line) (unsigned int line, const char *file, + int discriminator, bool is_stmt); /* Called at start of prologue code. LINE is the first line in the - function. This has been given the same prototype as source_line, - so that the source_line hook can be substituted if appropriate. */ + function. */ void (* begin_prologue) (unsigned int line, const char *file); /* Called at end of prologue code. LINE is the first line in the function. */ void (* end_prologue) (unsigned int line, const char *file); + /* Called at beginning of epilogue code. */ + void (* begin_epilogue) (unsigned int line, const char *file); + /* Record end of epilogue code. */ void (* end_epilogue) (unsigned int line, const char *file); @@ -98,7 +106,8 @@ struct gcc_debug_hooks void (* type_decl) (tree decl, int local); /* Debug information for imported modules and declarations. */ - void (* imported_module_or_decl) (tree decl, tree context); + void (* imported_module_or_decl) (tree decl, tree name, + tree context, bool child); /* DECL is an inline function, whose body is present, but which is not being output at this point. */ @@ -124,9 +133,42 @@ struct gcc_debug_hooks text sections. */ void (* switch_text_section) (void); + /* Records a direct call to the function DECL, noting the point of call + and the debug info for the function. Called from final_scan_insn + when ICF debugging is enabled. */ + void (* direct_call) (tree decl); + + /* Records the OBJ_TYPE_REF_TOKEN for a virtual call through ADDR, which + for C++ is the vtable slot index, noting the INSN_UID for the call + instruction. Called from calls.c:emit_call_1 when ICF debugging is + enabled. It's necessary to do this during lowering because the + call instruction and the OBJ_TYPE_REF become separated after that + point. */ + void (* virtual_call_token) (tree addr, int insn_uid); + + /* Copies the OBJ_TYPE_REF_TOKEN for a virtual call from OLD_INSN to + NEW_INSN. Called from emit-rtl.c:try_split when a CALL_INSN is + split, so that the vtable slot index remains associated with the + new CALL_INSN. */ + void (* copy_call_info) (rtx old_insn, rtx new_insn); + + /* Records a virtual call given INSN_UID, which is the UID of the call + instruction. The UID is then mapped to the vtable slot index noted + during the lowering phase. Called from final_scan_insn when ICF + debugging is enabled. */ + void (* virtual_call) (int insn_uid); + + /* Called from grokdeclarator. Replaces the anonymous name with the + type name. */ + void (* set_name) (tree, tree); + /* This is 1 if the debug writer wants to see start and end commands for the main source files, and 0 otherwise. */ int start_end_main_source_file; + + /* The type of symtab field used by these debug hooks. This is one + of the TYPE_SYMTAB_IS_xxx values defined in tree.h. */ + int tree_type_symtab_field; }; extern const struct gcc_debug_hooks *debug_hooks; @@ -135,13 +177,18 @@ extern const struct gcc_debug_hooks *debug_hooks; extern void debug_nothing_void (void); extern void debug_nothing_charstar (const char *); extern void debug_nothing_int_charstar (unsigned int, const char *); +extern void debug_nothing_int_charstar_int_bool (unsigned int, const char *, + int, bool); extern void debug_nothing_int (unsigned int); extern void debug_nothing_int_int (unsigned int, unsigned int); extern void debug_nothing_tree (tree); -extern void debug_nothing_tree_int (tree, int); extern void debug_nothing_tree_tree (tree, tree); +extern void debug_nothing_tree_int (tree, int); +extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool); extern bool debug_true_const_tree (const_tree); extern void debug_nothing_rtx (rtx); +extern void debug_nothing_rtx_rtx (rtx, rtx); +extern void debug_nothing_uid (int); /* Hooks for various debug formats. */ extern const struct gcc_debug_hooks do_nothing_debug_hooks; @@ -154,6 +201,8 @@ extern const struct gcc_debug_hooks vmsdbg_debug_hooks; /* Dwarf2 frame information. */ extern void dwarf2out_begin_prologue (unsigned int, const char *); +extern void dwarf2out_vms_end_prologue (unsigned int, const char *); +extern void dwarf2out_vms_begin_epilogue (unsigned int, const char *); extern void dwarf2out_end_epilogue (unsigned int, const char *); extern void dwarf2out_frame_init (void); extern void dwarf2out_frame_finish (void); @@ -172,4 +221,9 @@ extern int symbol_queue_index; const char *remap_debug_filename (const char *); void add_debug_prefix_map (const char *); +/* For -fdump-go-spec. */ + +extern const struct gcc_debug_hooks * +dump_go_spec_init (const char *, const struct gcc_debug_hooks *); + #endif /* !GCC_DEBUG_H */