added phase reinit data per irn
authorChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Wed, 20 Sep 2006 15:02:21 +0000 (15:02 +0000)
committerChristian Würdig <chriswue@ipd.info.uni-karlsruhe.de>
Wed, 20 Sep 2006 15:02:21 +0000 (15:02 +0000)
[r8282]

ir/ir/irphase.c
ir/ir/irphase_t.h

index 44e1841..75d8ecb 100644 (file)
@@ -62,11 +62,23 @@ void phase_reinit_irn_data(phase_t *phase)
 {
        int i, n;
 
-       if(!phase->data_init)
+       if (! phase->data_init)
                return;
 
-       for(i = 0, n = phase->n_data_ptr; i < n; ++i) {
-               if(phase->data_ptr[i])
-                       phase->data_init(phase, NULL, phase->data_ptr[i]);
+       for (i = 0, n = phase->n_data_ptr; i < n; ++i) {
+               if (phase->data_ptr[i])
+                       phase->data_init(phase, get_idx_irn(phase->irg, i), phase->data_ptr[i]);
        }
 }
+
+void phase_reinit_single_irn_data(phase_t *phase, ir_node *irn)
+{
+       int idx;
+
+       if (! phase->data_init)
+               return;
+
+       idx = get_irn_idx(irn);
+       if (phase->data_ptr[idx])
+               phase->data_init(phase, irn, phase->data_ptr[idx]);
+}
index a9ccd6a..9329ab5 100644 (file)
@@ -75,10 +75,16 @@ void phase_free(phase_t *phase);
 /**
  * Re-initialize the irn data for all nodes in the node => data map using the given callback.
  * @param phase The phase.
- * @note This function will pass NULL to the init function passed to phase_new().
  */
 void phase_reinit_irn_data(phase_t *phase);
 
+/**
+ * Re-initialize the irn data for the given node.
+ * @param phase The phase.
+ * @param irn   The irn.
+ */
+void phase_reinit_single_irn_data(phase_t *phase, ir_node *irn);
+
 /**
  * Get the name of the phase.
  */