X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgraph.c;h=82bd4c232028b13b34024034e67ece841822241f;hb=a6c8b3da7e86ac3352cefa422736b9683499911b;hp=325837671f027fd6898bbb16ac540b460fa35fea;hpb=a953ba0dad38aea06301d00e215829a909c1ffe7;p=libfirm diff --git a/ir/ir/irgraph.c b/ir/ir/irgraph.c index 325837671..82bd4c232 100644 --- a/ir/ir/irgraph.c +++ b/ir/ir/irgraph.c @@ -1,15 +1,28 @@ /* - * Project: libFIRM - * File name: ir/ir/irgraph.c - * Purpose: Entry point to the representation of procedure code. - * Author: Martin Trapp, Christian Schaefer - * Modified by: Goetz Lindenmaier - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2003 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * 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 Entry point to the representation of procedure code. + * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Michael Beck + * @version $Id$ + */ #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -30,13 +43,13 @@ #include "irflag_t.h" #include "array.h" #include "irgmod.h" -#include "mangle.h" #include "irouts.h" #include "irhooks.h" #include "irtools.h" #include "irgwalk.h" #include "iredges_t.h" #include "type_t.h" +#include "irmemory.h" #define INITIAL_IDX_IRN_MAP_SIZE 1024 @@ -130,7 +143,7 @@ void free_Phi_in_stack(Phi_in_stack *s); and optimization. */ ir_graph * -new_r_ir_graph (entity *ent, int n_loc) +new_r_ir_graph (ir_entity *ent, int n_loc) { ir_graph *res; ir_node *first_block; @@ -200,10 +213,12 @@ new_r_ir_graph (entity *ent, int n_loc) set_irp_typeinfo_inconsistent(); /* there is a new graph with typeinfo_none. */ res->callee_info_state = irg_callee_info_none; res->loopinfo_state = loopinfo_none; - res->execfreq_state = exec_freq_none; res->class_cast_state = ir_class_casts_transitive; res->extblk_state = ir_extblk_info_none; + res->execfreq_state = exec_freq_none; res->fp_model = fp_model_precise; + res->adr_taken_state = ir_address_taken_not_computed; + res->mem_disambig_opt = aa_opt_inherited; /*-- Type information for the procedure of the graph --*/ res->ent = ent; @@ -263,7 +278,7 @@ new_r_ir_graph (entity *ent, int n_loc) ir_graph * -new_ir_graph(entity *ent, int n_loc) +new_ir_graph(ir_entity *ent, int n_loc) { ir_graph *res = new_r_ir_graph(ent, n_loc); add_irp_irg(res); /* remember this graph global. */ @@ -366,7 +381,7 @@ void free_ir_graph (ir_graph *irg) { if (irg->frame_type) free_type(irg->frame_type); if (irg->value_table) del_identities(irg->value_table); if (irg->ent) { - peculiarity pec = get_entity_peculiarity (irg->ent); + ir_peculiarity pec = get_entity_peculiarity (irg->ent); set_entity_peculiarity (irg->ent, peculiarity_description); set_entity_irg(irg->ent, NULL); /* not set in const code irg */ set_entity_peculiarity (irg->ent, pec); @@ -564,13 +579,13 @@ void _set_irg_current_block(irg, node); } -entity * +ir_entity * (get_irg_entity)(const ir_graph *irg) { return _get_irg_entity(irg); } void -(set_irg_entity)(ir_graph *irg, entity *ent) { +(set_irg_entity)(ir_graph *irg, ir_entity *ent) { _set_irg_entity(irg, ent); } @@ -839,7 +854,9 @@ void set_irg_fp_model(ir_graph *irg, unsigned model) { * @param n the node * @param env ignored */ -static void normalize_proj_walker(ir_node *n, void *env){ +static void normalize_proj_walker(ir_node *n, void *env) +{ + (void) env; if (is_Proj(n)) { ir_node *pred = get_Proj_pred(n); ir_node *block = get_nodes_block(pred); @@ -870,6 +887,52 @@ void *get_irg_loc_description(ir_graph *irg, int n) { return irg->loc_descriptions ? irg->loc_descriptions[n] : NULL; } +#ifndef NDEBUG +void set_using_block_visited(ir_graph *irg) { + assert(irg->using_block_visited == 0); + irg->using_block_visited = 1; +} + +void clear_using_block_visited(ir_graph *irg) { + assert(irg->using_block_visited == 1); + irg->using_block_visited = 0; +} + +int using_block_visited(const ir_graph *irg) { + return irg->using_block_visited; +} + + +void set_using_visited(ir_graph *irg) { + assert(irg->using_visited == 0); + irg->using_visited = 1; +} + +void clear_using_visited(ir_graph *irg) { + assert(irg->using_visited == 1); + irg->using_visited = 0; +} + +int using_visited(const ir_graph *irg) { + return irg->using_visited; +} + + +void set_using_irn_link(ir_graph *irg) { + assert(irg->using_irn_link == 0); + irg->using_irn_link = 1; +} + +void clear_using_irn_link(ir_graph *irg) { + assert(irg->using_irn_link == 1); + irg->using_irn_link = 0; +} + +int using_irn_link(const ir_graph *irg) { + return irg->using_irn_link; +} +#endif + /* Returns a estimated node count of the irg. */ unsigned (get_irg_estimated_node_cnt)(const ir_graph *irg) { return _get_irg_estimated_node_cnt(irg);