ir_node *init_sp; /**< The node representing the stack pointer
at the start of the function. */
+ ir_node *start_barrier; /**< The barrier of the start block */
+
ir_node *reg_params; /**< The reg params node. */
pmap *regs; /**< A map of all callee-save and ignore regs to
their Projs to the RegParams node. */
pmap_insert(env->regs, (void *) isa->bp, NULL);
reg_params_bl = get_irg_start_block(irg);
env->reg_params = be_new_RegParams(irg, reg_params_bl, pmap_count(env->regs));
+ add_irn_dep(env->reg_params, get_irg_start(irg));
/*
* make proj nodes for the callee save registers.
env->init_sp = be_new_IncSP(sp, irg, bl, env->init_sp, BE_STACK_FRAME_SIZE_EXPAND);
be_abi_reg_map_set(env->regs, sp, env->init_sp);
- barrier = create_barrier(env, bl, &mem, env->regs, 0);
+ env->start_barrier = barrier = create_barrier(env, bl, &mem, env->regs, 0);
env->init_sp = be_abi_reg_map_get(env->regs, sp);
arch_set_irn_register(env->birg->main_env->arch_env, env->init_sp, sp);
return pmap_get(abi->regs, (void *) reg);
}
+ir_node *be_abi_get_start_barrier(be_abi_irg_t *abi)
+{
+ return abi->start_barrier;
+}
+
/*
_____ _____ _ _ _ _ _ _
|_ _| __ \| \ | | | | | | | | |