X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeinfo.h;h=76a5eea6d0f3ab01878134443e036cd61130b7d3;hb=bdc59608633f59b0541a04883c24d19b1bc0ffae;hp=c373b2908032ecd6d1dc9f3a678a8cfdaa721c25;hpb=6f167fe94cbbd6ca72afbef96cb57fe7c14aad5e;p=libfirm diff --git a/ir/be/beinfo.h b/ir/be/beinfo.h index c373b2908..76a5eea6d 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. * @@ -26,11 +26,8 @@ #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,29 +35,27 @@ 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); @@ -70,6 +65,6 @@ void be_info_new_node(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