allow several odd weak combinations
[libfirm] / ir / be / bespillslots.c
index 026b087..6265111 100644 (file)
 #include "unionfind.h"
 #include "irdump_t.h"
 
-#include "benode_t.h"
+#include "benode.h"
 #include "besched.h"
+#include "bespill.h"
 #include "bespillslots.h"
 #include "bechordal_t.h"
 #include "bestatevent.h"
-#include "bespilloptions.h"
 #include "bemodule.h"
 #include "beintlive_t.h"
-#include "beirg_t.h"
-#include "bearch_t.h"
+#include "beirg.h"
+#include "bearch.h"
 
 #define DBG_COALESCING         1
 #define DBG_INTERFERENCES      2
@@ -182,7 +182,7 @@ static spill_t *collect_memphi(be_fec_env_t *env, ir_node *node,
                }
 
                /* add an affinity edge */
-               affinty_edge           = obstack_alloc(&env->obst, sizeof(affinty_edge[0]));
+               affinty_edge           = OALLOC(&env->obst, affinity_edge_t);
                affinty_edge->affinity = get_block_execfreq(exec_freq, get_nodes_block(arg));
                affinty_edge->slot1    = res->spillslot;
                affinty_edge->slot2    = arg_spill->spillslot;
@@ -222,7 +222,7 @@ static int merge_interferences(be_fec_env_t *env, bitset_t** interferences,
        /* merge spillslots and interferences */
        res = uf_union(spillslot_unionfind, s1, s2);
        /* we assume that we always merge s2 to s1 so swap s1, s2 if necessary */
-       if(res != 0) {
+       if(res != s1) {
                int t = s1;
                s1 = s2;
                s2 = t;
@@ -569,7 +569,8 @@ static void assign_spill_entity(ir_node *node, ir_entity *entity)
                return;
        }
 
-       /* beware: we might have Stores with Memory Proj's, ia32 fisttp for instance */
+       /* beware: we might have Stores with Memory Proj's, ia32 fisttp for
+          instance */
        node = skip_Proj(node);
        assert(arch_get_frame_entity(node) == NULL);
        arch_set_frame_entity(node, entity);
@@ -643,7 +644,7 @@ static void assign_spillslots(be_fec_env_t *env)
 
                                        memperm = get_memperm(env, predblock);
 
-                                       entry = obstack_alloc(&env->obst, sizeof(entry[0]));
+                                       entry = OALLOC(&env->obst, memperm_entry_t);
                                        entry->node = node;
                                        entry->pos = i;
                                        entry->in = argslot->entity;