void survive_dce_register_irn(survive_dce_t *sd, ir_node **place)
{
- pmap_insert(sd->places, *place, (void *) place);
+ if(*place != NULL)
+ pmap_insert(sd->places, *place, (void *) place);
+}
+
+void survive_dce_register_pmap(survive_dce_t *sd, pmap *m)
+{
+ pmap_entry *ent;
+
+ for(ent = pmap_first(m); ent; ent = pmap_next(m))
+ survive_dce_register_irn(sd, (ir_node **) &ent->value);
}
#ifndef _FIRM_SURVIVE_DCE_H
#define _FIRM_SURVIVE_DCE_H
+#include "pmap.h"
+
typedef struct _survive_dce_t survive_dce_t;
/**
*/
void survive_dce_register_irn(survive_dce_t *sd, ir_node **place);
+/**
+ * Register a map to survive the dce.
+ * All value parts of the map's entries are assumed to be ir node pointers
+ * and are registered with survive_dce_register_irn().
+ * @param sd The survive dce private data.
+ * @param m The map.
+ */
+void survive_dce_register_pmap(survive_dce_t *sd, pmap *m);
+
#endif