+ /* add current values */
+ for (i = 0; i < ASIZE; i++)
+ vals[i] += curr_vals[i];
+
+ /* write out */
+ dump_file(filename, vals);
+}
+
+
+void phi_stat_dump(char *filename) {
+ if (filename)
+ dump_file(filename, curr_vals);
+}
+
+
+void phi_stat_dump_pretty(char *filename) {
+ int i;
+ FILE *out;
+
+ if (! (out = fopen(filename, "wt"))) {
+ fprintf(stderr, "Cannot open file for writing: %s\n", filename);
+ return;
+ }
+
+ fprintf(out, "\nPhi argument types\n");
+ fprintf(out, "Total %4d\n", curr_vals[I_ARG]);
+ fprintf(out, "Constants %4d\n", curr_vals[I_CONST]);
+ fprintf(out, "CF-Pred %4d\n", curr_vals[I_PRED]);
+ fprintf(out, "Others %4d\n", curr_vals[I_GLOB]);
+
+ fprintf(out, "\nPhi class interference\n");
+ fprintf(out, "Blocks %4d\n", curr_vals[I_BLOCKS]);
+ fprintf(out, "Phis %4d\n", curr_vals[I_PHIS]);
+ fprintf(out, "Interf classes %4d of %4d\n", curr_vals[I_PHICLSI], curr_vals[I_PHICLS]);
+ fprintf(out, "Interf pairs %4d of %4d\n", curr_vals[I_PAIRSI], curr_vals[I_PAIRS]);
+ fprintf(out, "Interf values %4d of %4d\n", curr_vals[I_PAIRSI], curr_vals[I_VALUES]);
+
+ fprintf(out, "\nPhi arity\n");
+ for (i = I_ARITY_S; i<=I_ARITY_E; i++)
+ fprintf(out, "%2i %4d\n", i-I_ARITY_S, curr_vals[i]);
+
+ fprintf(out, "\nPhi class sizes\n");
+ for (i = I_CLS_SIZE_S; i<=I_CLS_SIZE_E; i++)
+ fprintf(out, "%2i %4d\n", i-I_CLS_SIZE_S, curr_vals[i]);
+
+ fprintf(out, "\n\nTotal nodes: %4d\n", curr_vals[I_ALL_NODES]);
+
+ fclose(out);