belive: Avoid duplicate map lookups when calculating the liveness of a node in a...
[libfirm] / ir / be / beinfo.h
index 9599648..15f59cc 100644 (file)
@@ -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.
  *
  * @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,37 +34,35 @@ 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 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. */
-} sched_info_t;
+};
 
-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;
+       assert(!is_Proj(node));
+       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_duplicate(const ir_node *old_node, ir_node *new_node);
-int be_info_initialized(const ir_graph *irg);
+void be_info_new_node(ir_graph *irg, ir_node *node);
 
-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