X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fdebug%2Fdbginfo.c;h=0fad91a3fb14d3d53f9a1df4b9a8ea45c456630d;hb=86f5b2fb5805caee806f8b1dd0ea3f6b41632586;hp=1b5b737f6dc6a275fc8c10d0f5ab4601e07a14a2;hpb=86d40b95989dec61ef6711a49dfbc347d08010dd;p=libfirm diff --git a/ir/debug/dbginfo.c b/ir/debug/dbginfo.c index 1b5b737f6..0fad91a3f 100644 --- a/ir/debug/dbginfo.c +++ b/ir/debug/dbginfo.c @@ -1,20 +1,17 @@ /* -** Copyright (C) 2001 by Universitaet Karlsruhe -** All rights reserved. -** -** Authors: Goetz Lindenmaier -** -** dbginfo: This is a empty implementation of the Firm interface to -** debugging support. It only guarantees that the Firm library compiles -** and runs without any real debugging support. -** The functions herein are declared weak so that they can be overriden -** by a real implementation. -*/ - -/* $Id$ */ + * Project: libFIRM + * File name: ir/debug/dbginfo.c + * Purpose: Implements the Firm interface to debug information. + * Author: Goetz Lindenmaier + * Modified by: + * Created: 2001 + * CVS-ID: $Id$ + * Copyright: (c) 2001-2003 Universität Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ #ifdef HAVE_CONFIG_H -# include +# include "config.h" #endif #include "dbginfo_t.h" @@ -22,44 +19,37 @@ #include "type_t.h" #include "entity_t.h" - -INLINE void -dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) { +void +default_dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) { set_irn_dbg_info(nw, get_irn_dbg_info(old)); } -INLINE void -dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes, - ir_node **old_nodes, int n_old_nodes, - 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) { } +merge_pair_func *__dbg_info_merge_pair = default_dbg_info_merge_pair; -void (*__dbg_info_merge_pair)(ir_node *nw, ir_node *old, dbg_action info) - = &dbg_info_merge_pair; - -void (*__dbg_info_merge_sets)(ir_node **new_nodes, int n_new_nodes, - ir_node **old_nodes, int n_old_nodes, - dbg_action info) - = &dbg_info_merge_sets; +merge_sets_func *__dbg_info_merge_sets = default_dbg_info_merge_sets; +snprint_dbg_func *__dbg_info_snprint = (snprint_dbg_func *)0; -void dbg_init( void (merge_pair)(ir_node *nw, ir_node *old, dbg_action info) , - void (merge_sets)(ir_node **new_nodes, int n_new_nodes, - ir_node **old_nodes, int n_old_nodes, - dbg_action info) - ) { - __dbg_info_merge_pair = merge_pair; - __dbg_info_merge_sets = merge_sets; +void dbg_init( merge_pair_func *mpf, merge_sets_func *msf, snprint_dbg_func *snprint_dbg ) +{ + __dbg_info_merge_pair = mpf ? mpf : default_dbg_info_merge_pair; + __dbg_info_merge_sets = msf ? msf : default_dbg_info_merge_sets; + __dbg_info_snprint = snprint_dbg; } -INLINE void +void set_irn_dbg_info(ir_node *n, struct dbg_info* db) { n->dbi = db; } -INLINE struct dbg_info * +struct dbg_info * get_irn_dbg_info(ir_node *n) { return n->dbi; } @@ -67,17 +57,53 @@ get_irn_dbg_info(ir_node *n) { /* Routines to access the field of an entity containing the debugging information. */ -INLINE void set_entity_dbg_info(entity *ent, dbg_info* db) { +void set_entity_dbg_info(entity *ent, dbg_info* db) { ent->dbi = db; } -INLINE dbg_info *get_entity_dbg_info(entity *ent) { + +dbg_info *get_entity_dbg_info(entity *ent) { return ent->dbi; } + /* Routines to access the field of a type containing the debugging information. */ -INLINE void set_type_dbg_info(type *tp, dbg_info* db) { +void set_type_dbg_info(type *tp, dbg_info* db) { tp->dbi = db; } -INLINE dbg_info *get_type_dbg_info(type *tp) { + +dbg_info *get_type_dbg_info(type *tp) { return tp->dbi; } + +/* + * Converts a debug_action into a string. + */ +const char *dbg_action_2_str(dbg_action a) { +#define CASE(a) case a: return #a + + switch (a) { + CASE(dbg_error); + CASE(dbg_opt_ssa); + CASE(dbg_opt_auxnode); + CASE(dbg_const_eval); + CASE(dbg_opt_cse); + CASE(dbg_straightening); + CASE(dbg_if_simplification); + CASE(dbg_algebraic_simplification); + CASE(dbg_write_after_write); + CASE(dbg_write_after_read); + CASE(dbg_read_after_write); + CASE(dbg_read_after_read); + CASE(dbg_read_a_const); + CASE(dbg_rem_poly_call); + CASE(dbg_dead_code); + CASE(dbg_opt_confirm); + default: + if (a <= dbg_max) + return "string conversion not implemented"; + else + assert(0); + return NULL; + } +#undef CASE +}