and again
[libfirm] / ir / opt / scalar_replace.c
index b0d76ca..8c87f77 100644 (file)
@@ -290,7 +290,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;
 
                /* we know we are at a leave, because this function is only
@@ -299,8 +299,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);
        }
 }
 
@@ -406,8 +404,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
                res = find_path(pred, len);