Make fehler159 compilable.
[libfirm] / ir / opt / scalar_replace.c
index fbe05ff..8c87f77 100644 (file)
@@ -230,6 +230,13 @@ int is_address_taken(ir_node *sel)
                         */
                        return 1;
 
+               case iro_Id: {
+                       int res = is_address_taken(succ);
+                       if (res)
+                               return 1;
+                       break;
+               }
+
                case iro_Tuple:
                        /* Non-optimized Tuple, happens in inlining */
                        for (input_nr = get_Tuple_n_preds(succ) - 1; input_nr >= 0; --input_nr) {
@@ -283,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
@@ -292,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);
        }
 }
 
@@ -399,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);