X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeinfo.h;h=c421ea38462e9a4e360e1df81ab815eb5c95fe46;hb=5474a1c188c9d59eea2c915515980cd9cbab58d8;hp=c373b2908032ecd6d1dc9f3a678a8cfdaa721c25;hpb=6f167fe94cbbd6ca72afbef96cb57fe7c14aad5e;p=libfirm diff --git a/ir/be/beinfo.h b/ir/be/beinfo.h index c373b2908..c421ea384 100644 --- a/ir/be/beinfo.h +++ b/ir/be/beinfo.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -21,16 +21,12 @@ * @file * @brief additional backend node infos * @author Matthias Braun - * @version $Id$ */ #ifndef FIRM_BE_BEINFO_H #define FIRM_BE_BEINFO_H -#include "bearch.h" -#include "irphase_t.h" -#include "irphases_t.h" - -typedef unsigned int sched_timestep_t; +#include "be_types.h" +#include "irnode_t.h" /** * The schedule structure which is present at each ir node. @@ -38,38 +34,36 @@ typedef unsigned int sched_timestep_t; * Currently, only basic blocks are scheduled. The list head of * every block schedule list is the Block list. */ -typedef struct sched_info_t { - struct list_head list; /**< The list head to list the nodes in a schedule. */ - unsigned idx; /**< The node index of the nodes this schedule info belongs to. */ - sched_timestep_t time_step; /**< If a is after b in a schedule, its time step is larger than b's. */ - unsigned scheduled : 1; /**< 1, if the node is in the schedule of the block, 0 else. */ -} sched_info_t; +struct sched_info_t { + ir_node *next; + ir_node *prev; + sched_timestep_t time_step; /**< If a is after b in a schedule, its time step is larger than b's. */ +}; -typedef struct reg_out_info_t { +struct reg_out_info_t { const arch_register_t *reg; const arch_register_req_t *req; -} reg_out_info_t; +}; -typedef struct backend_info_t { +struct backend_info_t { sched_info_t sched_info; const arch_register_req_t **in_reqs; reg_out_info_t *out_infos; arch_irn_flags_t flags; -} backend_info_t; +}; static inline backend_info_t *be_get_info(const ir_node *node) { - backend_info_t *info = node->backend_info; - return info; + return (backend_info_t*) node->backend_info; } void be_info_init(void); void be_info_free(void); void be_info_init_irg(ir_graph *irg); -void be_info_new_node(ir_node *node); +void be_info_new_node(ir_graph *irg, ir_node *node); void be_info_duplicate(const ir_node *old_node, ir_node *new_node); int be_info_initialized(const ir_graph *irg); -int be_info_equal(const ir_node *node1, const ir_node *node2); +int be_nodes_equal(const ir_node *node1, const ir_node *node2); #endif