}
/* dump OUT requirements */
- if (attr->n_res > 0) {
+ if (ARR_LEN(attr->slots) > 0) {
reqs = get_ppc32_out_req_all(n);
dump_reg_req(F, n, reqs, 1);
}
/* dump assigned registers */
slots = get_ppc32_slots(n);
- if (slots && attr->n_res > 0) {
- for (i = 0; i < attr->n_res; i++) {
+ if (slots && ARR_LEN(attr->slots) > 0) {
+ for (i = 0; i < ARR_LEN(attr->slots); i++) {
if (slots[i]) {
fprintf(F, "reg #%d = %s\n", i, slots[i]->name);
}
ppc32_attr_t *attr = get_ppc32_attr(node);
assert(is_ppc32_irn(node) && "Not an ppc node.");
- assert(pos < attr->n_res && "Invalid OUT position.");
+ assert(pos < ARR_LEN(attr->slots) && "Invalid OUT position.");
assert(attr->slots[pos] && "No register assigned");
return arch_register_get_name(attr->slots[pos]);
ppc32_attr_t *attr = get_ppc32_attr(node);
assert(is_ppc32_irn(node) && "Not an ppc node.");
- assert(pos < attr->n_res && "Invalid OUT position.");
+ assert(pos < ARR_LEN(attr->slots) && "Invalid OUT position.");
assert(attr->slots[pos] && "No register assigned");
return arch_register_get_index(attr->slots[pos]);
ppc32_attr_t *attr = get_ppc32_attr(node);
assert(is_ppc32_irn(node) && "Not an ppc node.");
- assert(pos < attr->n_res && "Invalid OUT position.");
+ assert(pos < ARR_LEN(attr->slots) && "Invalid OUT position.");
assert(attr->slots[pos] && "No register assigned");
return attr->slots[pos];
}
-/**
- * Sets the number of results.
- */
-void set_ppc32_n_res(ir_node *node, int n_res) {
- ppc32_attr_t *attr = get_ppc32_attr(node);
- attr->n_res = n_res;
-}
-
/**
* Returns the number of results.
*/
int get_ppc32_n_res(const ir_node *node) {
ppc32_attr_t *attr = get_ppc32_attr(node);
- return attr->n_res;
+ return ARR_LEN(attr->slots);
}
/**
const arch_register_req_t **in_reqs, const arch_register_req_t **out_reqs,
const be_execution_unit_t ***execution_units,
int n_res, unsigned latency) {
- ppc32_attr_t *attr = get_ppc32_attr(node);
+ ir_graph *irg = get_irn_irg(node);
+ struct obstack *obst = get_irg_obstack(irg);
+ ppc32_attr_t *attr = get_ppc32_attr(node);
+ (void) execution_units;
+ (void) latency;
attr->flags = flags;
attr->in_req = in_reqs;
attr->out_req = out_reqs;
- attr->n_res = n_res;
attr->content_type = ppc32_ac_None;
attr->offset_mode = ppc32_ao_Illegal;
attr->data.empty = NULL;
- memset((void *)attr->slots, 0, n_res * sizeof(attr->slots[0]));
+ attr->slots = NEW_ARR_D(const arch_register_t*, obst, n_res);
+ memset(attr->slots, 0, n_res * sizeof(attr->slots[0]));
}