Make Ld/St parallelisation work (but seems to be broken with bit fields).
[libfirm] / ir / opt / proc_cloning.c
index 5912784..82cbebb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -187,11 +187,7 @@ static void collect_irg_calls(ir_node *call, void *env) {
        if (is_Call(call)) {
                call_ptr = get_Call_ptr(call);
 
-               /* Call pointer must be a SymConst*/
-               if (op_SymConst != get_irn_op(call_ptr))
-                       return;
-               /* Call pointer must be the address of an entity.*/
-               if (get_SymConst_kind(call_ptr) != symconst_addr_ent)
+               if (! is_SymConst_addr_ent(call_ptr))
                        return;
 
                callee = get_SymConst_entity(call_ptr);
@@ -269,6 +265,7 @@ static void set_preds(ir_node *irn, void *env) {
        irn_copy  = get_irn_link(irn);
 
        if (is_Block(irn)) {
+               set_Block_MacroBlock(irn_copy, get_irn_link(get_Block_MacroBlock(irn)));
                for (i = get_Block_n_cfgpreds(irn) - 1; i >= 0; i--) {
                        pred = get_Block_cfgpred(irn, i);
                        /* "End" block must be handled extra, because it is not matured.*/