#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;)
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);
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);
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
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);
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);
len = ARR_LEN(phis);
for(i = 0; i < len; ++i) {
ir_node *phi = phis[i];
- be_set_phi_flags(phi, arch_irn_flags_ignore);
arch_set_irn_register(phi, env.reg);
}
be_ssa_construction_destroy(&senv);