X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firprofile.c;h=5ff78fec12617dae798497c00e0a5292ea47b9b4;hb=7719bf6a7bd442f4763731d56d856cb082156877;hp=c3b146163e14f1110bc75fbdf6a844fa515e01ce;hpb=1a26f4853c07d1ecd68a097409dd602edfe29eff;p=libfirm diff --git a/ir/ir/irprofile.c b/ir/ir/irprofile.c index c3b146163..5ff78fec1 100644 --- a/ir/ir/irprofile.c +++ b/ir/ir/irprofile.c @@ -110,8 +110,7 @@ static hook_entry_t hook; /** * Instrument a block with code needed for profiling */ -static void -instrument_block(ir_node *bb, ir_node *address, unsigned int id) +static void instrument_block(ir_node *bb, ir_node *address, unsigned int id) { ir_graph *irg = get_irn_irg(bb); ir_node *load, *store, *offset, *add, *projm, *proji, *unknown; @@ -127,12 +126,12 @@ instrument_block(ir_node *bb, ir_node *address, unsigned int id) cnst = new_r_Const_long(irg, mode_Iu, get_mode_size_bytes(mode_Iu) * id); offset = new_r_Add(bb, address, cnst, get_modeP_data()); load = new_r_Load(bb, unknown, offset, mode_Iu, 0); - projm = new_r_Proj(bb, load, mode_M, pn_Load_M); - proji = new_r_Proj(bb, load, mode_Iu, pn_Load_res); + projm = new_r_Proj(load, mode_M, pn_Load_M); + proji = new_r_Proj(load, mode_Iu, pn_Load_res); cnst = new_r_Const_long(irg, mode_Iu, 1); add = new_r_Add(bb, proji, cnst, mode_Iu); store = new_r_Store(bb, projm, offset, add, 0); - projm = new_r_Proj(bb, store, mode_M, pn_Store_M); + projm = new_r_Proj(store, mode_M, pn_Store_M); set_irn_link(bb, projm); set_irn_link(projm, load); } @@ -144,8 +143,7 @@ typedef struct fix_env { /** * SSA Construction for instrumentation code memory */ -static void -fix_ssa(ir_node * bb, void * data) +static void fix_ssa(ir_node *bb, void *data) { fix_env *env = data; ir_node *mem; @@ -195,8 +193,7 @@ static void add_constructor(ir_entity *method) * Pseudocode: * void __firmprof_initializer(void) { __init_firmprof(ent_filename, bblock_id, bblock_counts, n_blocks); } */ -static ir_graph * -gen_initializer_irg(ir_entity *ent_filename, ir_entity *bblock_id, ir_entity *bblock_counts, int n_blocks) +static ir_graph *gen_initializer_irg(ir_entity *ent_filename, ir_entity *bblock_id, ir_entity *bblock_counts, int n_blocks) { ir_node *ins[4]; ident *name = new_id_from_str("__firmprof_initializer"); @@ -244,7 +241,7 @@ gen_initializer_irg(ir_entity *ent_filename, ir_entity *bblock_id, ir_entity *bb ins[3] = new_r_Const_long(irg, mode_Iu, n_blocks); call = new_r_Call(bb, get_irg_initial_mem(irg), symconst, 4, ins, init_type); - ret = new_r_Return(bb, new_r_Proj(bb, call, mode_M, pn_Call_M), 0, NULL); + ret = new_r_Return(bb, new_r_Proj(call, mode_M, pn_Call_M), 0, NULL); mature_immBlock(bb); add_immBlock_pred(get_irg_end_block(irg), ret); @@ -277,11 +274,11 @@ static void create_location_data(dbg_info *dbg, block_id_walker_data_t *wd) int i, len = strlen(fname) + 1; tarval **tarval_string; - snprintf(buf, sizeof(buf), "firm_name_arr.%d", nr); + snprintf(buf, sizeof(buf), "firm_name_arr.%u", nr); arr = new_type_array(1, wd->tp_char); set_array_bounds_int(arr, 0, 0, len); - snprintf(buf, sizeof(buf), "__firm_name.%d", nr++); + snprintf(buf, sizeof(buf), "__firm_name.%u", nr++); id = new_id_from_str(buf); ent = new_entity(get_glob_type(), id, arr); set_entity_ld_ident(ent, id); @@ -310,8 +307,7 @@ static void create_location_data(dbg_info *dbg, block_id_walker_data_t *wd) * Walker: assigns an ID to every block. * Builds the string table */ -static void -block_id_walker(ir_node * bb, void * data) +static void block_id_walker(ir_node *bb, void *data) { block_id_walker_data_t *wd = data; @@ -327,8 +323,7 @@ block_id_walker(ir_node * bb, void * data) #define IDENT(x) new_id_from_chars(x, sizeof(x) - 1) -ir_graph * -ir_profile_instrument(const char *filename, unsigned flags) +ir_graph *ir_profile_instrument(const char *filename, unsigned flags) { int n, i; int n_blocks = 0; @@ -346,7 +341,6 @@ ir_profile_instrument(const char *filename, unsigned flags) ir_type *loc_type = NULL; ir_type *charptr_type; ir_type *gtp; - ir_node *start_block; tarval **tarval_array; tarval **tarval_string; tarval *tv; @@ -428,7 +422,7 @@ ir_profile_instrument(const char *filename, unsigned flags) /* initialize count array */ NEW_ARR_A(tarval *, tarval_array, n_blocks); - tv = get_tarval_null(mode_Iu); + tv = get_mode_null(mode_Iu); for (i = 0; i < n_blocks; ++i) { tarval_array[i] = tv; } @@ -465,7 +459,6 @@ ir_profile_instrument(const char *filename, unsigned flags) wd.symconst = new_r_SymConst(irg, mode_P_data, sym, symconst_addr_ent); irg_block_walk_graph(irg, block_id_walker, NULL, &wd); - start_block = get_irg_start_block(irg); env.end_block = get_irg_end_block(irg); irg_block_walk_graph(irg, fix_ssa, NULL, &env); for (i = get_Block_n_cfgpreds(endbb) - 1; i >= 0; --i) { @@ -529,12 +522,12 @@ ir_profile_instrument(const char *filename, unsigned flags) add_compound_ent_value_w_path(ent_locations, n, path); } pmap_destroy(wd.fname_map); + current_ir_graph = rem; } return gen_initializer_irg(ent_filename, bblock_id, bblock_counts, n_blocks); } -static void -profile_node_info(void *ctx, FILE *f, const ir_node *irn) +static void profile_node_info(void *ctx, FILE *f, const ir_node *irn) { (void) ctx; if (is_Block(irn)) { @@ -542,16 +535,14 @@ profile_node_info(void *ctx, FILE *f, const ir_node *irn) } } -static void -register_vcg_hook(void) +static void register_vcg_hook(void) { memset(&hook, 0, sizeof(hook)); hook.hook._hook_node_info = profile_node_info; register_hook(hook_node_info, &hook); } -static void -unregister_vcg_hook(void) +static void unregister_vcg_hook(void) { unregister_hook(hook_node_info, &hook); } @@ -560,8 +551,7 @@ unregister_vcg_hook(void) * Reads the corresponding profile info file if it exists and returns a * profile info struct */ -void -ir_profile_read(const char *filename) +void ir_profile_read(const char *filename) { FILE *f; char buf[8]; @@ -598,8 +588,7 @@ ir_profile_read(const char *filename) /** * Frees the profile info */ -void -ir_profile_free(void) +void ir_profile_free(void) { if (profile) { unregister_vcg_hook(); @@ -610,8 +599,7 @@ ir_profile_free(void) /** * Tells whether profile module has acquired data */ -int -ir_profile_has_data(void) +int ir_profile_has_data(void) { return (profile != NULL); }