X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=driver%2Ffirm_codegen.c;h=ad89a969a3b6befc1b54b9ab53e1bf93fd1a677f;hb=86e613f57ea7f1eac5b020163a1ab045ee198142;hp=941f5593c1fb765d5ed28913e87361a31ca944ce;hpb=df14ae28d51bffb7d020622feaae5029befc9ee6;p=cparser diff --git a/driver/firm_codegen.c b/driver/firm_codegen.c index 941f559..ad89a96 100644 --- a/driver/firm_codegen.c +++ b/driver/firm_codegen.c @@ -3,7 +3,7 @@ * * Compile when BACK_END_IS_CP_FIRM_BE is defined * - * (C) 2005 Michael Beck beck@ipd.info.uni-karlsruhe.de + * (C) 2005-2009 Michael Beck beck@ipd.info.uni-karlsruhe.de * * $Id$ */ @@ -41,11 +41,9 @@ static char *generate_asm_file_name(const char *file_name) { break; #endif -#ifdef FIRM_BACKEND case BE_FIRM_BE: strncat(asm_file_name, ".s", 4); break; -#endif } return asm_file_name; @@ -55,42 +53,45 @@ static char *generate_asm_file_name(const char *file_name) { * Calls the specified backend. * Code is written to file ('.c' is substituted for '.asm') */ -void do_codegen(FILE *out, const char *file_name) { - FILE *close_out = NULL; - if (out == NULL) { - char *asm_file_name = generate_asm_file_name(file_name); +void do_codegen(FILE *out, const char *file_name) +{ + FILE *close_out = NULL; + if (out == NULL) { + char *asm_file_name = generate_asm_file_name(file_name); - if ((out = fopen(asm_file_name, "w")) == NULL) { - fprintf(stderr, "Could not open output file %s\n", asm_file_name); - exit(1); - } - free(asm_file_name); - close_out = out; - } + if ((out = fopen(asm_file_name, "w")) == NULL) { + fprintf(stderr, "Could not open output file %s\n", asm_file_name); + exit(1); + } + free(asm_file_name); + close_out = out; + } - switch (firm_be_opt.selection) { + switch (firm_be_opt.selection) { #ifdef FIRM2C_BACKEND - case BE_FIRM2C: - timer_push(TV_FIRM2C_BE); - cbackend_set_debug_retrieve(dbg_retrieve); - generate_code_file(out); - timer_pop(); - break; + case BE_FIRM2C: { + ir_timer_t *timer = ir_timer_new(); + timer_register(timer, "Firm: C-generating backend"); + timer_start(timer); + generate_code_file(out); + timer_stop(timer); + break; + } #endif -#ifdef FIRM_BACKEND - case BE_FIRM_BE: - timer_push(TV_FIRM_BE); - ir_set_debug_retrieve(dbg_retrieve); - be_main(out, file_name); - timer_pop(); - break; -#endif + case BE_FIRM_BE: { + ir_timer_t *timer = ir_timer_new(); + timer_register(timer, "Firm: backend"); + timer_start(timer); + be_main(out, file_name); + timer_stop(timer); + break; + } - default: - fprintf(stderr, "Fatal: Unknown backend %d\n", firm_be_opt.selection); - } /* switch (firm_be_opt.selection) */ + default: + fprintf(stderr, "Fatal: Unknown backend %d\n", firm_be_opt.selection); + } /* switch (firm_be_opt.selection) */ - if (close_out) - fclose(close_out); -} /* do_codegen() */ + if (close_out) + fclose(close_out); +}