fix a bug in constraint enforcement; improve phi handling and phi0 construction ...
[libfirm] / ir / be / ia32 / ia32_x87.c
index 4f85646..60e1228 100644 (file)
@@ -44,7 +44,7 @@
 #include "error.h"
 
 #include "../belive_t.h"
-#include "../besched_t.h"
+#include "../besched.h"
 #include "../benode_t.h"
 #include "bearch_ia32_t.h"
 #include "ia32_new_nodes.h"
@@ -1267,9 +1267,8 @@ static int sim_store(x87_state *state, ir_node *n, ir_op *op, ir_op *op_p)
                                set_ia32_am_sc(vfld, get_ia32_am_sc(n));
                                set_ia32_ls_mode(vfld, get_ia32_ls_mode(n));
 
-                               irg   = get_irn_irg(n);
-                               rproj = new_r_Proj(irg, block, vfld, get_ia32_ls_mode(vfld), pn_ia32_vfld_res);
-                               mproj = new_r_Proj(irg, block, vfld, mode_M, pn_ia32_vfld_M);
+                               rproj = new_r_Proj(block, vfld, get_ia32_ls_mode(vfld), pn_ia32_vfld_res);
+                               mproj = new_r_Proj(block, vfld, mode_M, pn_ia32_vfld_M);
                                mem   = get_irn_Proj_for_mode(n, mode_M);
 
                                assert(mem && "Store memory not found");
@@ -1277,6 +1276,7 @@ static int sim_store(x87_state *state, ir_node *n, ir_op *op, ir_op *op_p)
                                arch_set_irn_register(rproj, op2);
 
                                /* reroute all former users of the store memory to the load memory */
+                               irg = get_irn_irg(n);
                                edges_reroute(mem, mproj, irg);
                                /* set the memory input of the load to the store memory */
                                set_irn_n(vfld, n_ia32_vfld_mem, mem);
@@ -1734,12 +1734,11 @@ static int sim_Keep(x87_state *state, ir_node *node)
  */
 static void keep_float_node_alive(ir_node *node)
 {
-       ir_graph                    *irg    = get_irn_irg(node);
        ir_node                     *block  = get_nodes_block(node);
        const arch_register_class_t *cls    = arch_get_irn_reg_class_out(node);
        ir_node                     *keep;
 
-       keep = be_new_Keep(cls, irg, block, 1, &node);
+       keep = be_new_Keep(cls, block, 1, &node);
 
        assert(sched_is_scheduled(node));
        sched_add_after(node, keep);