-/**
- * Create a Barrier from the registers stored at a register state map.
- *
- * @param rsm the register state map
- * @param block the block to create the Barrier on
- */
-static ir_node *rsm_create_barrier(register_state_mapping_t *rsm,
- ir_node *block)
-{
- int n_barrier_outs = ARR_LEN(rsm->regs);
- ir_node **in = rsm->value_map;
- ir_node *barrier;
- int o;
-
- assert(ARR_LEN(rsm->value_map) == n_barrier_outs);
-
- barrier = be_new_Barrier(block, n_barrier_outs, in);
-
- for (o = 0; o < n_barrier_outs; ++o) {
- const reg_flag_t *regflag = &rsm->regs[o];
- const arch_register_t *reg = regflag->reg;
- ir_node *proj;
- if (reg == NULL) {
- arch_set_out_register_req(barrier, o, arch_no_register_req);
- proj = new_r_Proj(barrier, mode_M, o);
- } else {
- be_set_constr_single_reg_in(barrier, o, reg, arch_register_req_type_none);
- be_set_constr_single_reg_out(barrier, o, reg, regflag->flags);
- proj = new_r_Proj(barrier, reg->reg_class->mode, o);
- }
- rsm->value_map[o] = proj;
- }
-
- rsm->last_barrier = barrier;
-
- return barrier;
-}
-
-
-
-