and again
[libfirm] / ir / opt / data_flow_scalar_replace.c
index 8d3f088..ca0e2fa 100644 (file)
@@ -310,7 +310,7 @@ static void link_all_leave_sels(ir_entity *ent, ir_node *sel)
     * visited more than once causing a ring here, so we use the
     * node flag to mark linked nodes
     */
-   if (irn_visited(sel))
+   if (irn_visited_else_mark(sel))
     return;
 
   /*
@@ -318,8 +318,6 @@ static void link_all_leave_sels(ir_entity *ent, ir_node *sel)
    */
   set_irn_link(sel, get_entity_link(ent));
   set_entity_link(ent, sel);
-
-  mark_irn_visited(sel);
 }
 
 /* we need a special address that serves as an address taken marker */
@@ -445,8 +443,7 @@ static path_t *find_path(ir_node *sel, unsigned len)
 
   if (!is_Sel(pred)) {
     /* we found the root */
-
-    res = xmalloc(sizeof(*res) + (len - 1) * sizeof(res->path));
+    res = XMALLOCF(path_t, path, len);
     res->path_len = len;
   }
   else
@@ -1144,7 +1141,7 @@ static void sync_mem_edges(env_t *env) {
       vnum_state++;
 
   /* We allocate the memory, that we need for the predecessors of the sync.*/
-  in     = xmalloc(sizeof(ir_node*) *vnum_state);
+  in = XMALLOCN(ir_node*, vnum_state);
 
   /* The global memory edge is the first predecessor of this sync node.*/
   if(val_arr[env->gl_mem_vnum].mem_edge_state == NULL) {