From c6ce532e97d94d6709edf7c26d437b498f52cc07 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Thu, 2 Sep 2004 14:18:09 +0000 Subject: [PATCH] moved dumpers to irdumptxt.c [r3816] --- ir/tr/entity.c | 137 ++++------------------------------------------- ir/tr/entity.h | 13 ----- ir/tr/entity_t.h | 26 ++++++--- ir/tr/type.c | 59 +------------------- ir/tr/type.h | 5 -- 5 files changed, 30 insertions(+), 210 deletions(-) diff --git a/ir/tr/entity.c b/ir/tr/entity.c index 630f534f2..7c337b501 100644 --- a/ir/tr/entity.c +++ b/ir/tr/entity.c @@ -10,9 +10,7 @@ * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include "firm_common_t.h" # include # include @@ -22,11 +20,16 @@ # include "mangle.h" # include "typegmod.h" # include "array.h" + /* All this is needed to build the constant node for methods: */ # include "irprog_t.h" # include "ircons.h" # include "tv_t.h" +#if DEBUG_libfirm +# include "irdump.h" /* for output if errors occur. */ +#endif + # include "callgraph.h" /* for dumping debug output */ /*******************************************************************/ @@ -110,6 +113,8 @@ new_entity (type *owner, ident *name, type *type) } res->irg = NULL; + res->accesses = NULL; + #ifdef DEBUG_libfirm res->nr = get_irp_new_node_nr(); #endif @@ -1182,6 +1187,7 @@ entity *resolve_ent_polymorphy(type *dynamic_class, entity* static_ent) { assert(static_ent && static_ent->kind == k_entity); res = resolve_ent_polymorphy2(dynamic_class, static_ent); +#if DEBUG_libfirm if (!res) { printf(" Could not find entity "); DDME(static_ent); printf(" in "); DDMT(dynamic_class); @@ -1190,130 +1196,7 @@ entity *resolve_ent_polymorphy(type *dynamic_class, entity* static_ent) { dump_type(get_entity_owner(static_ent)); dump_type(dynamic_class); } +#endif assert(res); return res; } - - - -/*******************************************************************/ -/** Debug aides **/ -/*******************************************************************/ - - -#if 1 || DEBUG_libfirm -int dump_node_opcode(FILE *F, ir_node *n); /* from irdump.c */ - - - -#define X(a) case a: fprintf(F, #a); break -void dump_entity_to_file (FILE *F, entity *ent) { - int i, j; - assert(ent && ent->kind == k_entity); - type *owner = get_entity_owner(ent); - type *type = get_entity_type(ent); - fprintf(F, "entity %s (%ld)\n", get_entity_name(ent), get_entity_nr(ent)); - fprintf(F, " type: %s (%ld)\n", get_type_name(type), get_type_nr(type)); - fprintf(F, " owner: %s (%ld)\n", get_type_name(owner), get_type_nr(owner)); - - if (is_class_type(get_entity_owner(ent))) { - if (get_entity_n_overwrites(ent) > 0) { - fprintf(F, " overwrites:\n"); - for (i = 0; i < get_entity_n_overwrites(ent); ++i) { - entity *ov = get_entity_overwrites(ent, i); - fprintf(F, " %d: %s of class %s\n", i, get_entity_name(ov), get_type_name(get_entity_owner(ov))); - } - } else { - fprintf(F, " Does not overwrite other entities. \n"); - } - if (get_entity_n_overwrittenby(ent) > 0) { - fprintf(F, " overwritten by:\n"); - for (i = 0; i < get_entity_n_overwrittenby(ent); ++i) { - entity *ov = get_entity_overwrittenby(ent, i); - fprintf(F, " %d: %s of class %s\n", i, get_entity_name(ov), get_type_name(get_entity_owner(ov))); - } - } else { - fprintf(F, " Is not overwriten by other entities. \n"); - } - } - - fprintf(F, " allocation: "); - switch (get_entity_allocation(ent)) { - X(allocation_dynamic); - X(allocation_automatic); - X(allocation_static); - X(allocation_parameter); - } - - fprintf(F, "\n visibility: "); - switch (get_entity_visibility(ent)) { - X(visibility_local); - X(visibility_external_visible); - X(visibility_external_allocated); - } - - fprintf(F, "\n variability: "); - switch (get_entity_variability(ent)) { - X(variability_uninitialized); - X(variability_initialized); - X(variability_part_constant); - X(variability_constant); - } - - if (get_entity_variability(ent) != variability_uninitialized) { - if (is_atomic_entity(ent)) { - fprintf(F, "\n atomic value: "); - dump_node_opcode(F, get_atomic_ent_value(ent)); - } else { - fprintf(F, "\n compound values:"); - for (i = 0; i < get_compound_ent_n_values(ent); ++i) { - compound_graph_path *path = get_compound_ent_value_path(ent, i); - entity *ent0 = get_compound_graph_path_node(path, 0); - fprintf(F, "\n %3d ", get_entity_offset_bits(ent0)); - if (get_type_state(type) == layout_fixed) - fprintf(F, "(%3d) ", get_compound_ent_value_offset_bits(ent, i)); - fprintf(F, "%s", get_entity_name(ent0)); - for (j = 0; j < get_compound_graph_path_length(path); ++j) { - entity *node = get_compound_graph_path_node(path, j); - fprintf(F, ".%s", get_entity_name(node)); - if (is_array_type(get_entity_owner(node))) - fprintf(F, "[%d]", get_compound_graph_path_array_index(path, j)); - } - fprintf(F, "\t = "); - dump_node_opcode(F, get_compound_ent_value(ent, i)); - } - } - } - - fprintf(F, "\n volatility: "); - switch (get_entity_volatility(ent)) { - X(volatility_non_volatile); - X(volatility_is_volatile); - } - - fprintf(F, "\n peculiarity: %s", get_peculiarity_string(get_entity_peculiarity(ent))); - fprintf(F, "\n ld_name: %s", ent->ld_name ? get_entity_ld_name(ent) : "no yet set"); - fprintf(F, "\n offset: %d", get_entity_offset_bits(ent)); - if (is_method_type(get_entity_type(ent))) { - if (get_entity_irg(ent)) /* can be null */ { - fprintf(F, "\n irg = %ld", get_irg_graph_nr(get_entity_irg(ent))); - if (get_irp_callgraph_state() == irp_callgraph_and_calltree_consistent) { - fprintf(F, "\n recursion depth %d", get_irg_recursion_depth(get_entity_irg(ent))); - fprintf(F, "\n loop depth %d", get_irg_loop_depth(get_entity_irg(ent))); - } - } else { - fprintf(F, "\n irg = NULL"); - } - } - fprintf(F, "\n\n"); -} -#undef X - -void dump_entity (entity *ent) { - dump_entity_to_file(stdout, ent); -} - -#else /* DEBUG_libfirm */ -void dump_entity_to_file (FILE *F, entity *ent) {} -void dump_entity (entity *ent) {} -#endif /* DEBUG_libfirm */ diff --git a/ir/tr/entity.h b/ir/tr/entity.h index 5ea572144..a7a71c7d2 100644 --- a/ir/tr/entity.h +++ b/ir/tr/entity.h @@ -523,17 +523,4 @@ bool entity_not_visited(entity *ent); entity *resolve_ent_polymorphy(type *dynamic_class, entity* static_ent); -/*-----------------------------------------------------------------*/ -/* Debug aides */ -/*-----------------------------------------------------------------*/ - - -/** Write the entity and all its attributes to stdout. - * - * Writes the entity and all its attributes to stdout if DEBUG_libfirm - * is set. Else does nothing. */ -void dump_entity_to_file (FILE *F, entity *ent); -void dump_entity (entity *ent); - - # endif /* _ENTITY_H_ */ diff --git a/ir/tr/entity_t.h b/ir/tr/entity_t.h index 487ad0ad8..4f085005e 100644 --- a/ir/tr/entity_t.h +++ b/ir/tr/entity_t.h @@ -38,10 +38,13 @@ # ifndef _ENTITY_T_H_ # define _ENTITY_T_H_ +#include "firm_common_t.h" + # include "entity.h" # include "typegmod.h" # include "mangle.h" + /** A path in a compund graph. */ struct compound_graph_path { firm_kind kind; /**< dynamic type tag for compound graph path. */ @@ -80,28 +83,37 @@ struct entity { struct dbg_info* dbi; /**< A pointer to information for debug support. */ /* ------------- fields for atomic entities ---------------*/ + ir_node *value; /**< value if entity is not of variability uninitialized. Only for atomic entities. */ /* ------------- fields for compound entities ---------------*/ + ir_node **values; /**< constant values of compound entities. Only available if - variablility not uninitialized. Must be set for variability constant + variablility not uninitialized. Must be set for variability constant */ - compound_graph_path **val_paths; /**< paths corresponding to constant values. Only available if - variablility not uninitialized. Must be set for variability constant */ + compound_graph_path **val_paths; /**< paths corresponding to constant values. Only available if + variablility not uninitialized. Must be set for variability constant */ /* ------------- fields for entities owned by a class type ---------------*/ - entity **overwrites; /**< A list of entities this entity overwrites. */ + + entity **overwrites; /**< A list of entities this entity overwrites. */ entity **overwrittenby; /**< A list of entities that overwrite this entity. */ /* ------------- fields for methods ---------------*/ + enum peculiarity peculiarity; ir_graph *irg; /**< If (type == method_type) this is the corresponding irg. - The ir_graph constructor automatically sets this field. - Yes, it must be here. */ + The ir_graph constructor automatically sets this field. + Yes, it must be here. */ + + /* ------------- fields for analyses ---------------*/ + + ir_node **accesses; /**< accessing nodes: loads, stores. */ + #ifdef DEBUG_libfirm int nr; /**< a unique node number for each node to make output - readable. */ + readable. */ #endif }; diff --git a/ir/tr/type.c b/ir/tr/type.c index 04ce12feb..e8ba17383 100644 --- a/ir/tr/type.c +++ b/ir/tr/type.c @@ -1623,7 +1623,7 @@ entity *get_compound_member(type *tp, int pos) else { assert(0 && "need struct, union or class to get a member"); - res=NULL; + res = NULL; } return res; @@ -1635,60 +1635,3 @@ int is_compound_type(type *tp) { return (is_class_type(tp) || is_struct_type(tp) || is_array_type(tp) || is_union_type(tp)); } - - -#ifdef DEBUG_libfirm -int dump_node_opcode(FILE *F, ir_node *n); /* from irdump.c */ - -void dump_type (type *tp) { - int i; - - printf("%s type %s (%ld)", get_tpop_name(get_type_tpop(tp)), get_type_name(tp), get_type_nr(tp)); - - switch (get_type_tpop_code(tp)) { - - case tpo_class: - printf("\n members: "); - for (i = 0; i < get_class_n_members(tp); ++i) { - entity *mem = get_class_member(tp, i); - printf("\n (%3d) %s:\t %s", - get_entity_offset_bits(mem), get_type_name(get_entity_type(mem)), get_entity_name(mem)); - } - printf("\n supertypes: "); - for (i = 0; i < get_class_n_supertypes(tp); ++i) { - type *stp = get_class_supertype(tp, i); - printf("\n %s", get_type_name(stp)); - } - printf("\n subtypes: "); - for (i = 0; i < get_class_n_subtypes(tp); ++i) { - type *stp = get_class_subtype(tp, i); - printf("\n %s", get_type_name(stp)); - } - - printf("\n peculiarity: %s", get_peculiarity_string(get_class_peculiarity(tp))); - break; - - case tpo_union: - case tpo_struct: - printf("\n members: "); - for (i = 0; i < get_compound_n_members(tp); ++i) { - entity *mem = get_compound_member(tp, i); - printf("\n (%3d) %s:\t %s", - get_entity_offset_bits(mem), get_type_name(get_entity_type(mem)), get_entity_name(mem)); - } - break; - - case tpo_pointer: { - type *tt = get_pointer_points_to_type(tp); - - printf("\n points to %s (%ld)", get_type_name(tt), get_type_nr(tt)); - } break; - - default: - printf(": details not implemented\n"); - } - printf("\n\n"); -} -#else /* DEBUG_libfirm */ -void dump_type (type *tp) {} -#endif /* DEBUG_libfirm */ diff --git a/ir/tr/type.h b/ir/tr/type.h index 1bd30ca0e..da983e62e 100644 --- a/ir/tr/type.h +++ b/ir/tr/type.h @@ -940,11 +940,6 @@ long get_type_nr(type *tp); /*******************************************************************/ -/** Write the type and all its attributes to stdout. - * - * Writes the type and all its attributes to stdout if DEBUG_libfirm - * is set. Else does nothing. */ -void dump_type (type *tp); # endif /* _TYPE_H_ */ -- 2.20.1