Make warning about registers assigned to Phi inputs more clear.
[libfirm] / ir / be / ia32 / ia32_finish.c
index 7820830..fab1312 100644 (file)
@@ -44,6 +44,7 @@
 #include "ia32_finish.h"
 #include "ia32_new_nodes.h"
 #include "ia32_map_regs.h"
+#include "ia32_common_transform.h"
 #include "ia32_transform.h"
 #include "ia32_dbg_stat.h"
 #include "ia32_optimize.h"
@@ -171,6 +172,7 @@ static void ia32_transform_sub_to_neg_add(ir_node *irn, ia32_code_gen_t *cg) {
                        stc = new_rd_ia32_Stc(dbg, irg, block);
                        arch_set_irn_register(cg->arch_env, stc,
                                              &ia32_flags_regs[REG_EFLAGS]);
+                       sched_add_before(irn, stc);
 
                        adc = new_rd_ia32_Adc(dbg, irg, block, noreg, noreg, nomem, not,
                                              in1, stc);
@@ -201,7 +203,7 @@ static void ia32_transform_sub_to_neg_add(ir_node *irn, ia32_code_gen_t *cg) {
 
        /* remove the old sub */
        sched_remove(irn);
-       be_kill_node(irn);
+       kill_node(irn);
 
        DBG_OPT_SUB2NEGADD(irn, res);
 }
@@ -403,8 +405,8 @@ static void fix_am_source(ir_node *irn, void *env) {
        if (get_ia32_am_arity(irn) != ia32_am_binary)
                return;
 
-       base  = get_irn_n(irn, 0);
-       index = get_irn_n(irn, 1);
+       base  = get_irn_n(irn, n_ia32_base);
+       index = get_irn_n(irn, n_ia32_index);
 
        reg_base  = arch_get_irn_register(arch_env, base);
        reg_index = arch_get_irn_register(arch_env, index);
@@ -480,9 +482,9 @@ static void fix_am_source(ir_node *irn, void *env) {
                                foreach_out_edge_safe(irn, edge, next) {
                                        ir_node *node = get_edge_src_irn(edge);
                                        int      pn   = get_Proj_proj(node);
-                                       if(pn == 0) {
+                                       if (pn == pn_ia32_res) {
                                                exchange(node, irn);
-                                       } else if(pn == pn_ia32_mem) {
+                                       } else if (pn == pn_ia32_mem) {
                                                set_Proj_pred(node, load);
                                                set_Proj_proj(node, pnmem);
                                        }