/* 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);
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
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);
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_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;