remove #ifdef HAVE_CONFIG_Hs
[libfirm] / ir / common / irtools.c
index d3e4c7f..1e3e9ef 100644 (file)
@@ -23,9 +23,7 @@
  * @author    Michael Beck
  * @version   $Id$
  */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "config.h"
 
 #include "pset.h"
 
@@ -75,10 +73,10 @@ copy_irn_to_irg(ir_node *n, ir_graph *irg) {
        else if (op == op_Proj) {
                old_irg = get_irn_irg(n);
 
-               if (n == get_irg_frame(old_irg))
+               if (n == get_irg_initial_exec(old_irg))
+                       nn = get_irg_initial_exec(irg);
+               else if (n == get_irg_frame(old_irg))
                        nn = get_irg_frame(irg);
-               else if (n == get_irg_globals(old_irg))
-                       nn = get_irg_globals(irg);
                else if (n == get_irg_initial_mem(old_irg))
                        nn = get_irg_initial_mem(irg);
                else if (n == get_irg_args(old_irg))
@@ -107,8 +105,12 @@ copy_irn_to_irg(ir_node *n, ir_graph *irg) {
        set_irn_link(n, nn);
 
        /* fix the irg for blocks */
-       if (is_Block(nn))
+       if (is_Block(nn)) {
                nn->attr.block.irg = irg;
+
+               /* we cannot allow blocks WITHOUT macroblock input */
+               set_Block_MacroBlock(nn, get_Block_MacroBlock(n));
+       }
 }
 
 /*
@@ -120,7 +122,7 @@ ir_node *exact_copy(const ir_node *n) {
        ir_node *res, *block = NULL;
 
        if (is_no_Block(n))
-               block = get_irn_n(n, -1);
+               block = get_nodes_block(n);
 
        res = new_ir_node(get_irn_dbg_info(n),
                irg,
@@ -136,9 +138,16 @@ ir_node *exact_copy(const ir_node *n) {
           frees e.g. the memory of the graph_arr allocated in new_immBlock. */
        copy_node_attr(n, res);
        new_backedge_info(res);
+
+       if (is_Block(n)) {
+               set_Block_MacroBlock(res, get_Block_MacroBlock(n));
+       }
        return res;
 }
 
+/*
+ * Dump a pset containing Firm objects.
+ */
 void firm_pset_dump(pset *set) {
        void *obj;