X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fdebug%2Fdbginfo.c;h=73f8aea43e38649485f0fc2b4bbf0c25ebb44de0;hb=51894b3a1df63952817e3f673e8760e64de971d7;hp=9941700a65bc9a24497b495c544dc8eca76ea989;hpb=bf3972bf795dc4ff83de4f14a96e520c6533427b;p=libfirm diff --git a/ir/debug/dbginfo.c b/ir/debug/dbginfo.c index 9941700a6..73f8aea43 100644 --- a/ir/debug/dbginfo.c +++ b/ir/debug/dbginfo.c @@ -30,6 +30,7 @@ #include "irnode_t.h" #include "type_t.h" #include "entity_t.h" +#include "error.h" merge_pair_func *__dbg_info_merge_pair = default_dbg_info_merge_pair; merge_sets_func *__dbg_info_merge_sets = default_dbg_info_merge_sets; @@ -72,8 +73,7 @@ const char *dbg_action_2_str(dbg_action a) if (a <= dbg_max) return "string conversion not implemented"; else - assert(!"Missing debug action in dbg_action_2_str()"); - return NULL; + panic("Missing debug action in dbg_action_2_str()"); } #undef CASE } @@ -102,15 +102,14 @@ void default_dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes, } /** The debug info retriever function. */ -static retrieve_dbg_func retrieve_dbg = NULL; +static retrieve_dbg_func retrieve_dbg = NULL; +static retrieve_type_dbg_func retrieve_type_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) @@ -120,6 +119,21 @@ const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line) return NULL; } +void ir_set_type_debug_retrieve(retrieve_type_dbg_func func) +{ + retrieve_type_dbg = func; +} + +void ir_retrieve_type_dbg_info(char *buffer, size_t buffer_size, + const type_dbg_info *tdbgi) +{ + buffer[0] = '\0'; + if (retrieve_type_dbg) + retrieve_type_dbg(buffer, buffer_size, tdbgi); + assert(buffer_size > 0); + buffer[buffer_size-1] = '\0'; +} + void ir_dbg_info_snprint(char *buf, size_t bufsize, const dbg_info *dbg) { unsigned line;