X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fdebug%2Fdbginfo.c;h=178ce44af177eb312281633b85afa19628b8a05a;hb=bb5c6d5ce2e35c4074900017f8c8e1a4935054d0;hp=64ecc0476fb9e68f09f0bc17d139f18f9b9d59fc;hpb=eb08138c6b80c169945568e4414f491a9bc20388;p=libfirm diff --git a/ir/debug/dbginfo.c b/ir/debug/dbginfo.c index 64ecc0476..178ce44af 100644 --- a/ir/debug/dbginfo.c +++ b/ir/debug/dbginfo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -17,17 +17,13 @@ * PURPOSE. */ -/* - * Project: libFIRM - * File name: ir/debug/dbginfo.c - * Purpose: Implements the Firm interface to debug information. - * Author: Goetz Lindenmaier - * Modified by: Michael Beck - * Created: 2001 - * CVS-ID: $Id$ - * Copyright: (c) 2001-2006 Universität Karlsruhe +/** + * @file + * @brief Implements the Firm interface to debug information. + * @author Goetz Lindenmaier, Michael Beck + * @date 2001 + * @version $Id$ */ - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -50,36 +46,6 @@ void dbg_init( merge_pair_func *mpf, merge_sets_func *msf, snprint_dbg_func *snp __dbg_info_snprint = snprint_dbg; } /* dbg_init */ - -void set_irn_dbg_info(ir_node *n, dbg_info *db) { - n->dbi = db; -} /* set_irn_dbg_info */ - -struct dbg_info *get_irn_dbg_info(const ir_node *n) { - return n->dbi; -} /* get_irn_dbg_info */ - - -/* Routines to access the field of an entity containing the - debugging information. */ -void set_entity_dbg_info(ir_entity *ent, dbg_info *db) { - ent->dbi = db; -} /* set_entity_dbg_info */ - -dbg_info *get_entity_dbg_info(const ir_entity *ent) { - return ent->dbi; -} /* get_entity_dbg_info */ - -/* Routines to access the field of a type containing the - debugging information. */ -void set_type_dbg_info(ir_type *tp, dbg_info *db) { - tp->dbi = db; -} /* set_type_dbg_info */ - -dbg_info *get_type_dbg_info(const ir_type *tp) { - return tp->dbi; -} /* get_type_dbg_info */ - /* * Converts a debug_action into a string. */ @@ -103,6 +69,8 @@ const char *dbg_action_2_str(dbg_action a) { CASE(dbg_rem_poly_call); CASE(dbg_dead_code); CASE(dbg_opt_confirm); + CASE(dbg_gvn_pre); + CASE(dbg_combo); CASE(dbg_backend); default: if (a <= dbg_max) @@ -117,6 +85,7 @@ const char *dbg_action_2_str(dbg_action a) { void default_dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) { dbg_info *new_db = get_irn_dbg_info(nw); + (void) info; if (new_db == NULL) set_irn_dbg_info(nw, get_irn_dbg_info(old)); } /* default_dbg_info_merge_pair */ @@ -124,6 +93,7 @@ void default_dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) { void default_dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes, ir_node **old_nodes, int n_old_nodes, dbg_action info) { + (void) info; if (n_old_nodes == 1) { dbg_info *old_db = get_irn_dbg_info(old_nodes[0]); int i; @@ -133,3 +103,20 @@ void default_dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes, set_irn_dbg_info(new_nodes[i], old_db); } } /* default_dbg_info_merge_sets */ + +/** The debug info retriever function. */ +static retrieve_dbg_func retrieve_dbg = NULL; + +/* Sets a debug info retriever. */ +void ir_set_debug_retrieve(retrieve_dbg_func func) { + retrieve_dbg = func; +} + +/* Retrieve the debug info. */ +const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line) { + if (retrieve_dbg) + return retrieve_dbg(dbg, line); + + *line = 0; + return NULL; +}