X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firdump_grgen.c;h=62c94d487bf1dcd30bb248cdbe890ce407159479;hb=7f0a53a0ab98e5c4123bb7937170e89df5d61eb8;hp=f5f6371281a44a87a707238fa6758e020fac0dec;hpb=8adaba77d1d5fbf973b56a04b3fc5864338c386c;p=libfirm diff --git a/ir/ir/irdump_grgen.c b/ir/ir/irdump_grgen.c index f5f637128..62c94d487 100644 --- a/ir/ir/irdump_grgen.c +++ b/ir/ir/irdump_grgen.c @@ -42,6 +42,7 @@ #include "tv.h" #include "irgwalk.h" #include "firm_types.h" +#include "irdump_grgen.h" typedef struct @@ -114,10 +115,10 @@ static int edge_counter; irg_grgen_dumper_env_t *init_irg_grgen_dumper(char *file, int append) { - irg_grgen_dumper_env_t *const grgen_dumper_env = xmalloc(sizeof(*grgen_dumper_env)); + irg_grgen_dumper_env_t *const grgen_dumper_env = XMALLOC(irg_grgen_dumper_env_t); FILE *fp; - if(append) + if (append) fp = fopen(file, "at"); else { @@ -216,9 +217,9 @@ void dump_irg_grgen(ir_graph *irg, char *suffix) { char filename[100] = ""; - strncat(filename, get_entity_name(get_irg_entity(irg)), 100); - strncat(filename, suffix, 100); - strncat(filename, ".grg", 100); + strncat(filename, get_entity_name(get_irg_entity(irg)), sizeof(filename)-1); + strncat(filename, suffix, sizeof(filename)-1); + strncat(filename, ".grg", sizeof(filename)-1); dump_irg_grgen_file(irg, filename, 0); } @@ -240,7 +241,7 @@ static int dump_pattern(grgen_dumpinfo_t *dump_info, FILE *fp) ir_node *n = (ir_node *) entry->key; // Dump node - if(get_irn_opcode(n) == iro_Proj && get_irn_modecode(n) == irm_M) + if (get_irn_opcode(n) == iro_Proj && get_irn_mode(n) == mode_M) uses_memory = 1; dump_grg_node(n, dump_info, fp); dump_grgen_mode(n, dump_info, fp, NULL); @@ -253,7 +254,7 @@ static int dump_pattern(grgen_dumpinfo_t *dump_info, FILE *fp) int i; // Dump edges - for(i = is_Block(n) ? 0 : -1; i < get_irn_arity(n); i++) + for (i = is_Block(n) ? 0 : -1; i < get_irn_arity(n); i++) dump_grg_egde(n, i, dump_info, fp); } @@ -284,12 +285,12 @@ static void dump_grg_node(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp) char *node_name; // Already dumped the node? Then do nothing - if(pmap_contains(dump_info -> node_name_map, n)) + if (pmap_contains(dump_info -> node_name_map, n)) return; // Else generate new node name and dump the node - node_name = obstack_alloc(&(dump_info -> node_names), MAX_NODENAME_LEN); + node_name = OALLOCN(&dump_info->node_names, char, MAX_NODENAME_LEN); sprintf(node_name, "%s%ld", get_op_name(get_irn_op(n)), get_irn_node_nr(n)); fprintf(fp, "%s%s : %s;\n", indent, node_name, get_op_name(get_irn_op(n))); @@ -315,13 +316,13 @@ static void dump_grg_egde(ir_node *n, int n_edge, grgen_dumpinfo_t *dump_info, F // We have to dump to_node here, because to_node has to be known by grgen before // connecting an edge to it. to_node = get_irn_n(n, n_edge); - if(!pmap_contains(dump_info -> nodes_to_dump, to_node)) + if (!pmap_contains(dump_info -> nodes_to_dump, to_node)) return; - if((nodes_edge_names = pmap_get(dump_info -> edge_name_map, n)) == NULL) + if ((nodes_edge_names = pmap_get(dump_info -> edge_name_map, n)) == NULL) { - nodes_edge_names = (char **) obstack_alloc(&(dump_info->node_names), (get_irn_arity(n) + 1) * sizeof(char *)); - memset(nodes_edge_names, 0, (get_irn_arity(n) + 1) * sizeof(char *)); + size_t const count = get_irn_arity(n) + 1; + nodes_edge_names = OALLOCNZ(&dump_info->node_names, char*, count); pmap_insert(dump_info->edge_name_map, n, nodes_edge_names); } @@ -335,7 +336,7 @@ static void dump_grg_egde(ir_node *n, int n_edge, grgen_dumpinfo_t *dump_info, F char edge_name[50], *edge_name_obst; sprintf(edge_name, "pos%d_%d", n_edge + 1, edge_counter++); - edge_name_obst = obstack_alloc(&(dump_info->node_names), strlen(edge_name) + 1); + edge_name_obst = OALLOCN(&dump_info->node_names, char, strlen(edge_name) + 1); strcpy(edge_name_obst, edge_name); nodes_edge_names[n_edge + 1] = edge_name_obst; @@ -371,9 +372,9 @@ static void dump_grgen_mode(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp, i //mode_node_name = pmap_get(dump_info -> mode_name_map, (void *) mode_code); sprintf(edge_name, "m%d", edge_counter++); - if(pmap_get(dump_info->mode_edge_map, n) == NULL) + if (pmap_get(dump_info->mode_edge_map, n) == NULL) { - char *edge_name_obst = obstack_alloc(&(dump_info->node_names), strlen(edge_name) + 1); + char *edge_name_obst = OALLOCN(&dump_info->node_names, char, strlen(edge_name) + 1); strcpy(edge_name_obst, edge_name); pmap_insert(dump_info->mode_edge_map, n, edge_name_obst); } @@ -390,22 +391,21 @@ static void dump_grgen_mode(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp, i static char *dump_grgen_mode_node(ir_mode *irn_mode, grgen_dumpinfo_t *dump_info, FILE *fp) { - modecode mode_code = get_mode_modecode(irn_mode); const char *mode_name = get_mode_name(irn_mode); char *mode_node_name; - if(!pmap_contains(dump_info -> mode_name_map, (void *) mode_code)) + if (!pmap_contains(dump_info -> mode_name_map, irn_mode)) { // No, create a new mode-node - mode_node_name = obstack_alloc(&(dump_info -> mode_names), MAX_NODENAME_LEN); + mode_node_name = OALLOCN(&dump_info->mode_names, char, MAX_NODENAME_LEN); sprintf(mode_node_name, "mode_%s_node", mode_name); - pmap_insert(dump_info -> mode_name_map, (void *) mode_code, mode_node_name); + pmap_insert(dump_info -> mode_name_map, irn_mode, mode_node_name); fprintf(fp, "%s%s : Mode_%s;\n", indent, mode_node_name, mode_name); return(mode_node_name); } else { - return((char *) pmap_get(dump_info -> mode_name_map, (void *) mode_code)); + return((char *) pmap_get(dump_info -> mode_name_map, irn_mode)); } } @@ -422,26 +422,26 @@ static void dump_grgen_eval(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp) char *node_name; ir_opcode code = get_irn_opcode(n); - if(code == iro_Const) + if (code == iro_Const) { node_name = pmap_get(dump_info->node_name_map, n); fprintf(fp, "%s%s.value = \"%ld\";\n", indent, node_name, get_tarval_long(get_Const_tarval(n))); } - if(code == iro_Proj) + if (code == iro_Proj) { node_name = pmap_get(dump_info->node_name_map, n); fprintf(fp, "%s%s.proj = %ld;\n", indent, node_name, get_Proj_proj(n)); } - /*if(code == iro_Block) + /*if (code == iro_Block) { node_name = pmap_get(dump_info->node_name_map, n); fprintf(fp, "%s%s.pos = %d;\n", indent, node_name, ??); } - if(code == iro_Phi) + if (code == iro_Phi) { node_name = pmap_get(dump_info->node_name_map, n); fprintf(fp, "%s%s.pos = %d;\n", indent, node_name, ??); @@ -450,7 +450,7 @@ static void dump_grgen_eval(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp) // TODO: Dump Block evals: edge numbers - if(code == iro_Phi || code == iro_Block) + if (code == iro_Phi || code == iro_Block) { char **edge_names; int i; @@ -463,7 +463,7 @@ static void dump_grgen_eval(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp) // Correlate the matched phi edges with the matched block edges // Caution: Position 0 in the edge_names array is the block edge, so start at 1 - for(i = code == iro_Block; i < get_irn_arity(n) + 1; i++) + for (i = code == iro_Block; i < get_irn_arity(n) + 1; i++) { assert(edge_names[i] != NULL && "Some edges have not been dumped!"); @@ -486,9 +486,9 @@ static void set_indent(int i) int j; // Generate a string containing i blank characters - if(i < MAX_INDENT - 1) + if (i < MAX_INDENT - 1) { - for(j = 0; j < i; j++) + for (j = 0; j < i; j++) indent[j] = ' '; indent[j] = 0x0; }