#include "tv.h"
#include "irgwalk.h"
#include "firm_types.h"
+#include "irdump_grgen.h"
typedef struct
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)
{
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);
}
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);
int i;
// Dump edges
- for(i = -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);
}
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);
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));
}
}
// 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 = 0; 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!");