-static void phi_class_destruction_walker(ir_node *node, void *env) {
- pset *clss = _get_phi_class(node);
- if (clss) {
- del_pset(clss);
- _set_phi_class(node, NULL);
+/**
+ * Build the Phi classes for the set of given Phis.
+ */
+static void phi_class_compute_by_phis(phi_classes_t *pc, ir_nodeset_t *all_phi_nodes) {
+ if (ir_nodeset_size(all_phi_nodes) > 0) {
+ ir_nodeset_iterator_t iter;
+ ir_node *phi;
+
+ foreach_ir_nodeset(all_phi_nodes, phi, iter) {
+ ir_node ***irn_pc = _get_phi_class(&pc->ph, phi);
+
+ assert(is_Phi(phi) && mode_is_datab(get_irn_mode(phi)));
+
+ if (! irn_pc) {
+ ir_node **pc_values;
+
+ phi_class_build(pc, phi, NULL);
+
+ pc_values = *_get_phi_class(&pc->ph, phi);
+ DBG((pc->dbg, LEVEL_1, "inserting phiclass %p into all classes\n", pc_values));
+
+ pset_insert_ptr(pc->all_phi_classes, pc_values);
+ }
+ }