Added is_firm_be_node
authorSebastian Hack <hack@ipd.info.uni-karlsruhe.de>
Wed, 10 Aug 2005 11:11:16 +0000 (11:11 +0000)
committerSebastian Hack <hack@ipd.info.uni-karlsruhe.de>
Wed, 10 Aug 2005 11:11:16 +0000 (11:11 +0000)
ir/be/beutil.c
ir/be/beutil.h

index 53c868c..04e7e1b 100644 (file)
@@ -133,3 +133,27 @@ void dump_ir_block_graph_sched(ir_graph *irg, const char *suffix) {
     dump_ir_block_graph(irg, suffix);
     set_dump_node_edge_hook(old);
 }
+
+static void clear_link(ir_node *irn, void *data)
+{
+  set_irn_link(irn, NULL);
+}
+
+static void collect_phis(ir_node *irn, void *data)
+{
+  if(is_Phi(irn)) {
+    ir_node *bl = get_nodes_block(irn);
+    set_irn_link(irn, get_irn_link(bl));
+    set_irn_link(bl, irn);
+  }
+}
+
+void be_clear_links(ir_graph *irg)
+{
+       irg_walk_graph(irg, clear_link, NULL, NULL);
+}
+
+void be_collect_phis(ir_graph *irg)
+{
+       irg_walk_graph(irg, collect_phis, NULL, NULL);
+}
index 9db6184..ca7e82b 100644 (file)
@@ -24,6 +24,11 @@ static INLINE const ir_node *get_block(const ir_node *irn)
   return is_Block(irn) ? irn : get_nodes_block(irn);
 }
 
+static INLINE int is_firm_be_mode(const ir_mode *mode)
+{
+       return mode_is_data(mode);
+}
+
 /**
  * Check, if a node produces or consumes a data value.
  * If it does, it is significant for scheduling and register allocation.
@@ -37,13 +42,13 @@ static INLINE int is_data_node(const ir_node *irn)
        int i, n;
 
        /* If the node produces a data value, return immediately. */
-       if(mode_is_datab(get_irn_mode(irn)))
+       if(is_firm_be_mode(get_irn_mode(irn)))
                return 1;
 
        /* else check, if it takes a data value, if that is so, return */
        for(i = 0, n = get_irn_arity(irn); i < n; ++i) {
                ir_node *op = get_irn_n(irn, i);
-               if(mode_is_datab(get_irn_mode(op)))
+               if(is_firm_be_mode(get_irn_mode(op)))
                        return 1;
        }