char * get_dump_file_name (enum tree_dump_index phase) { char dump_id[10]; struct dump_file_info *dfi; if (phase == TDI_none) return NULL; dfi = get_dump_file_info (phase); if (dfi->state == 0) return NULL; if (dfi->num < 0) dump_id[0] = '\0'; else { char suffix; if (dfi->flags & TDF_TREE) suffix = 't'; else if (dfi->flags & TDF_IPA) suffix = 'i'; else suffix = 'r'; if (snprintf (dump_id, sizeof (dump_id), ".%03d%c", dfi->num, suffix) < 0) dump_id[0] = '\0'; } return concat (dump_base_name, dump_id, dfi->suffix, NULL); }
FILE * gcc_dump_begin (int phase, int *flag_ptr) { char name[256]; struct dump_file_info *dfi; FILE *stream; if (phase == TDI_none) return NULL; //name = "test.original"; strcpy(name,get_src_full_filename()); strcat(name,".original"); //name = get_dump_file_name (phase); //name = global_options.x_dump_base_name; dfi = get_dump_file_info (phase); #ifdef PLUGIN_DEBUG stream = fopen (name, dfi->state < 0 ? "w" : "a"); #else stream = fopen("/dev/null",dfi->state < 0 ? "w" : "a"); #endif register_state(dfi,dfi->state); if (!stream) error ("could not open dump file %qs: %m", name); else dfi->state = 1; //free (name); if (flag_ptr) *flag_ptr = dfi->flags; return stream; }
void finish_optimization_passes (void) { /* LLVM LOCAL begin Dead code strip cc1. */ #ifdef ENABLE_LLVM return; #else enum tree_dump_index i; struct dump_file_info *dfi; char *name; timevar_push (TV_DUMP); if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities) { dump_file = dump_begin (pass_profile.static_pass_number, NULL); end_branch_prob (); if (dump_file) dump_end (pass_profile.static_pass_number, dump_file); } if (optimize > 0) { dump_file = dump_begin (pass_combine.static_pass_number, NULL); if (dump_file) { dump_combine_total_stats (dump_file); dump_end (pass_combine.static_pass_number, dump_file); } } /* Do whatever is necessary to finish printing the graphs. */ if (graph_dump_format != no_graph) for (i = TDI_end; (dfi = get_dump_file_info (i)) != NULL; ++i) if (dump_initialized_p (i) && (dfi->flags & TDF_GRAPH) != 0 && (name = get_dump_file_name (i)) != NULL) { finish_graph_dump_file (name); free (name); } timevar_pop (TV_DUMP); #endif /* LLVM LOCAL end Dead code strip cc1. */ }
char * get_dump_file_name (enum tree_dump_index phase) { char dump_id[7]; struct dump_file_info *dfi; if (phase == TDI_none) return NULL; dfi = get_dump_file_info (phase); if (dfi->state == 0) return NULL; if (dfi->num < 0) dump_id[0] = '\0'; else { const char *template; if (dfi->flags & TDF_TREE)
int dump_enabled_p (enum tree_dump_index phase) { if (phase == TDI_tree_all) { size_t i; for (i = TDI_none + 1; i < (size_t) TDI_end; i++) if (dump_files[i].state) return 1; for (i = 0; i < extra_dump_files_in_use; i++) if (extra_dump_files[i].state) return 1; return 0; } else { struct dump_file_info *dfi = get_dump_file_info (phase); return dfi->state; } }
FILE * dump_begin (enum tree_dump_index phase, int *flag_ptr) { char *name; struct dump_file_info *dfi; FILE *stream; if (phase == TDI_none || !dump_enabled_p (phase)) return NULL; name = get_dump_file_name (phase); dfi = get_dump_file_info (phase); stream = fopen (name, dfi->state < 0 ? "w" : "a"); if (!stream) error ("could not open dump file %qs: %s", name, strerror (errno)); else dfi->state = 1; free (name); if (flag_ptr) *flag_ptr = dfi->flags; return stream; }
const char * dump_flag_name (enum tree_dump_index phase) { struct dump_file_info *dfi = get_dump_file_info (phase); return dfi->swtch; }
int dump_initialized_p (enum tree_dump_index phase) { struct dump_file_info *dfi = get_dump_file_info (phase); return dfi->state > 0; }