X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeprofile.c;h=2e76a50fafae08bdcb85903dcce6a052d2eeac86;hb=9276447aec4972df060349e162f583c4898dfec8;hp=fd3165bc9ef1fefd31ef615ca6ee01fcecef7fd5;hpb=94c92231c937cad61ed2153972a7b5a3c25a6846;p=libfirm diff --git a/ir/be/beprofile.c b/ir/be/beprofile.c index fd3165bc9..2e76a50fa 100644 --- a/ir/be/beprofile.c +++ b/ir/be/beprofile.c @@ -1,13 +1,28 @@ -/** vim: set sw=4 ts=4: - * @file beprofile.c - * @date 2006-04-06 - * @author Adam M. Szalkowski - * @cvs-id $Id$ +/* + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. * - * Code instrumentation and execution count profiling + * This file is part of libFirm. * - * Copyright (C) 2006 Universitaet Karlsruhe - * Released under the GPL + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/** + * @file + * @brief Code instrumentation and execution count profiling. + * @author Adam M. Szalkowski + * @date 06.04.2006 + * @version $Id$ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -33,13 +48,12 @@ #include "execfreq.h" #include "irvrfy.h" #include "type.h" -#include "entity.h" #include "be_t.h" #include "belive_t.h" #include "besched_t.h" #include "beirgmod.h" -#include "bearch.h" +#include "bearch_t.h" #include "beabi.h" #include "benode_t.h" #include "beutil.h" @@ -49,16 +63,11 @@ #include "bechordal_t.h" -#ifdef WITH_LIBCORE -#include -#include -#endif /* WITH_LIBCORE */ - #include "beprofile.h" /** An entry in the id-to-location map */ typedef struct loc_entry { - entity *fname; /**< the entity holding the file name */ + ir_entity *fname; /**< the entity holding the file name */ unsigned int lineno; /**< line number */ } loc_entry; @@ -178,20 +187,20 @@ fix_ssa(ir_node * bb, void * data) * void __firmprof_initializer(void) { __init_firmprof(ent_filename, bblock_id, bblock_counts, n_blocks); } */ static ir_graph * -gen_initializer_irg(entity * ent_filename, entity * bblock_id, entity * bblock_counts, int n_blocks) +gen_initializer_irg(ir_entity * ent_filename, ir_entity * bblock_id, ir_entity * bblock_counts, int n_blocks) { ir_node *start_block; ir_node *ins[4]; ident *name = new_id_from_str("__firmprof_initializer"); - entity *ent = new_entity(get_glob_type(), name, new_type_method(name, 0, 0)); + ir_entity *ent = new_entity(get_glob_type(), name, new_type_method(name, 0, 0)); ir_node *ret, *call, *symconst; symconst_symbol sym; ident *init_name = new_id_from_str("__init_firmprof"); ir_type *init_type = new_type_method(init_name, 4, 0); ir_type *uint, *uintptr, *string; - entity *init_ent; + ir_entity *init_ent; ir_graph *irg; ir_node *bb; ir_type *empty_frame_type; @@ -250,7 +259,7 @@ static void create_location_data(dbg_info *dbg, block_id_walker_data_t *wd) if (fname) { pmap_entry *entry = pmap_find(wd->fname_map, (void *)fname); - entity *ent; + ir_entity *ent; if (! entry) { static unsigned nr = 0; @@ -314,14 +323,14 @@ ir_graph * be_profile_instrument(const char *filename, unsigned flags) { int n, i; - unsigned int n_blocks = 0; - entity *bblock_id; - entity *bblock_counts; - entity *ent_filename; - entity *ent_locations = NULL; - entity *loc_lineno = NULL; - entity *loc_name = NULL; - entity *ent; + int n_blocks = 0; + ir_entity *bblock_id; + ir_entity *bblock_counts; + ir_entity *ent_filename; + ir_entity *ent_locations = NULL; + ir_entity *loc_lineno = NULL; + ir_entity *loc_name = NULL; + ir_entity *ent; ir_type *array_type; ir_type *uint_type; ir_type *string_type; @@ -379,14 +388,14 @@ be_profile_instrument(const char *filename, unsigned flags) loc_lineno = new_entity(loc_type, IDENT("lineno"), uint_type); align_l = get_type_alignment_bytes(uint_type); size = get_type_size_bytes(uint_type); - set_entity_offset_bytes(loc_lineno, 0); + set_entity_offset(loc_lineno, 0); charptr_type = new_type_pointer(IDENT("__charptr"), character_type, mode_P_data); align_n = get_type_size_bytes(charptr_type); set_type_alignment_bytes(charptr_type, align_n); loc_name = new_entity(loc_type, IDENT("name"), charptr_type); size = (size + align_n - 1) & -align_n; - set_entity_offset_bytes(loc_name, size); + set_entity_offset(loc_name, size); size += align_n; if (align_n > align_l)