Implement binary emitter for Cmp8Bit.
[libfirm] / ir / be / bestate.c
index 630c3ff..0daebb2 100644 (file)
@@ -25,9 +25,7 @@
  * @date        26.03.2007
  * @version     $Id$
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include "bestate.h"
 
 #include "irnodemap.h"
 #include "adt/cpset.h"
 
-#include "bearch_t.h"
+#include "bearch.h"
 #include "beuses.h"
-#include "besched_t.h"
+#include "besched.h"
 #include "belive_t.h"
 #include "bemodule.h"
-#include "benode_t.h"
+#include "benode.h"
 #include "bessaconstr.h"
 
 DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
@@ -62,7 +60,6 @@ typedef struct spill_info_t {
 
 typedef struct minibelady_env_t {
        struct obstack         obst;
-       const arch_env_t      *arch_env;
        const arch_register_t *reg;
        const be_lv_t         *lv;
        void                  *func_env;
@@ -79,11 +76,10 @@ typedef struct block_info_t {
        ir_node *end_state;
 } block_info_t;
 
-static INLINE
+static inline
 block_info_t *new_block_info(struct obstack *obst, ir_node *block)
 {
-       block_info_t *res = obstack_alloc(obst, sizeof(*res));
-       memset(res, 0, sizeof(res[0]));
+       block_info_t *res = OALLOCZ(obst, block_info_t);
 
        assert(is_Block(block));
        set_irn_link(block, res);
@@ -92,18 +88,17 @@ block_info_t *new_block_info(struct obstack *obst, ir_node *block)
        return res;
 }
 
-static INLINE
+static inline
 block_info_t *get_block_info(ir_node *block)
 {
        assert(irn_visited(block));
        return (block_info_t*) get_irn_link(block);
 }
 
-static INLINE
+static inline
 spill_info_t *create_spill_info(minibelady_env_t *env, ir_node *state)
 {
-       spill_info_t *spill_info = obstack_alloc(&env->obst, sizeof(spill_info[0]));
-       memset(spill_info, 0, sizeof(spill_info[0]));
+       spill_info_t *spill_info = OALLOCZ(&env->obst, spill_info_t);
        spill_info->value = state;
        spill_info->reloads = NEW_ARR_F(ir_node*, 0);
 
@@ -116,7 +111,7 @@ spill_info_t *create_spill_info(minibelady_env_t *env, ir_node *state)
        return spill_info;
 }
 
-static INLINE
+static inline
 spill_info_t *get_spill_info(minibelady_env_t *env, const ir_node *node)
 {
        spill_info_t *spill_info
@@ -169,12 +164,13 @@ void create_reload(minibelady_env_t *env, ir_node *state, ir_node *before,
 static
 void spill_phi(minibelady_env_t *env, ir_node *phi)
 {
-       ir_graph *irg = get_irn_irg(phi);
-       ir_node *block = get_nodes_block(phi);
-       int i, arity = get_irn_arity(phi);
-       ir_node **in = alloca(arity * sizeof(in[0]));
-       ir_node *spill_to_kill = NULL;
+       ir_graph     *irg           = get_irn_irg(phi);
+       ir_node      *block         = get_nodes_block(phi);
+       int           arity         = get_irn_arity(phi);
+       ir_node     **in            = ALLOCAN(ir_node*, arity);
+       ir_node      *spill_to_kill = NULL;
        spill_info_t *spill_info;
+       int           i;
 
        /* does a spill exist for the phis value? */
        spill_info = get_spill_info(env, phi);
@@ -192,7 +188,7 @@ void spill_phi(minibelady_env_t *env, ir_node *phi)
        DBG((dbg, LEVEL_2, "\tcreate Phi-M for %+F\n", phi));
 
        /* create a Phi-M */
-       spill_info->spill = new_r_Phi(irg, block, arity, in, mode_M);
+       spill_info->spill = new_r_Phi(block, arity, in, mode_M);
 
        if(spill_to_kill != NULL) {
                exchange(spill_to_kill, spill_info->spill);
@@ -547,7 +543,6 @@ void be_assure_state(be_irg_t *birg, const arch_register_t *reg, void *func_env,
        }
 
        obstack_init(&env.obst);
-       env.arch_env      = be_get_birg_arch_env(birg);
        env.reg           = reg;
        env.func_env      = func_env;
        env.create_spill  = create_spill;
@@ -600,8 +595,7 @@ void be_assure_state(be_irg_t *birg, const arch_register_t *reg, void *func_env,
                len = ARR_LEN(phis);
                for(i = 0; i < len; ++i) {
                        ir_node *phi = phis[i];
-                       be_set_phi_flags(env.arch_env, phi, arch_irn_flags_ignore);
-                       arch_set_irn_register(env.arch_env, phi, env.reg);
+                       arch_set_irn_register(phi, env.reg);
                }
                be_ssa_construction_destroy(&senv);