static ir_nodeset_t *all_phi_nodes;
static ir_nodeset_t *all_copy_nodes;
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copystat);
void be_init_copystat(void)
{
FIRM_DBG_REGISTER(dbg, "firm.be.copystat");
all_copy_nodes = ir_nodeset_new(64);
memset(curr_vals, 0, sizeof(curr_vals));
}
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copystat);
+BE_REGISTER_MODULE_DESTRUCTOR(be_quit_copystat);
void be_quit_copystat(void)
{
- ir_nodeset_del(all_phi_nodes);
- ir_nodeset_del(all_copy_nodes);
+ if (all_phi_nodes != NULL) {
+ ir_nodeset_del(all_phi_nodes);
+ all_phi_nodes = NULL;
+ }
+ if (all_copy_nodes != NULL) {
+ ir_nodeset_del(all_copy_nodes);
+ all_copy_nodes = NULL;
+ }
}
-BE_REGISTER_MODULE_DESTRUCTOR(be_quit_copystat);
/**
* @return 1 if the block at pos @p pos removed a critical edge
#endif /* WITH_ILP */
+/**
+ * Opens a file named base.ext with the mode mode.
+ */
+static FILE *be_ffopen(const char *base, const char *ext, const char *mode)
+{
+ FILE *out;
+ char buf[1024];
+
+ snprintf(buf, sizeof(buf), "%s.%s", base, ext);
+ buf[sizeof(buf) - 1] = '\0';
+ if (! (out = fopen(buf, mode))) {
+ fprintf(stderr, "Cannot open file %s in mode %s\n", buf, mode);
+ return NULL;
+ }
+ return out;
+}
+
void copystat_dump(ir_graph *irg)
{
int i;