X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm_common.c;h=01c61561c3a6983e0aca78e5aea162f6566c34a3;hb=af54b3443c1b7a152638788f50b45272e4888e10;hp=ef3e6eed899db4b1387f47288bb86d5495643488;hpb=a30e04ba46be95dab4cdf4fe058f4106dd6ac592;p=libfirm diff --git a/ir/common/firm_common.c b/ir/common/firm_common.c index ef3e6eed8..01c61561c 100644 --- a/ir/common/firm_common.c +++ b/ir/common/firm_common.c @@ -12,18 +12,24 @@ #ifdef HAVE_CONFIG_H -# include +# include "config.h" #endif #include "firm_common_t.h" #include "irgraph.h" #include "irloop.h" +#include "tv.h" + +/** + * Ideally, this macro would check if size bytes could be read at + * pointer p. No generic solution. + */ +#define POINTER_READ(p, size) (p) /* returns the kind of the thing */ firm_kind get_kind (const void *firm_thing) { - assert (firm_thing); - return *(firm_kind *)firm_thing; + return POINTER_READ(firm_thing, sizeof(firm_kind)) ? *(firm_kind *)firm_thing : k_BAD; } @@ -41,6 +47,7 @@ const char* print_firm_kind(void *firm_thing) { case k_tarval : return "k_tarval"; case k_ir_loop : return "k_ir_loop"; case k_ir_compound_graph_path : return "k_ir_compound_graph_path"; + case k_ir_extblk : return "k_ir_extblk"; default: return ""; } } @@ -68,13 +75,16 @@ void firm_identify_thing(void *X) printf("type: %s %s: %ld (%p)\n", get_type_tpop_name(X), get_type_name(X), get_type_nr(X), X); break; case k_ir_graph: - printf("graph: %s: %ld (%p)\n", get_entity_name(get_irg_ent(X)), get_irg_graph_nr(X), X); + printf("graph: %s: %ld (%p)\n", get_entity_name(get_irg_entity(X)), get_irg_graph_nr(X), X); break; case k_ir_node: printf("irnode: %s%s %ld (%p)\n", get_irn_opname(X), get_mode_name(get_irn_mode(X)), get_irn_node_nr(X), X); break; case k_ir_mode: - printf("mode %s: (%p)\n", get_mode_name(X),X); + printf("mode %s: (%p)\n", get_mode_name(X), X); + break; + case k_ir_op: + printf("op %s: (%p)\n", get_op_name(X), X); break; case k_tarval: printf("tarval : "); tarval_printf(X); printf(" (%p)\n", X); @@ -82,8 +92,12 @@ void firm_identify_thing(void *X) case k_ir_loop: printf("loop: with depth %d: (%p)\n", get_loop_depth(X), X); break; - case k_ir_op: case k_ir_compound_graph_path: + printf("compound_graph_path: (%p)\n", X); + break; + case k_ir_extblk: + printf("extended block: (%p)\n", X); + break; default: printf("Cannot identify thing at (%p).\n", X); }