+ /* create entities and assign offsets according to size and alignment*/
+ for (i=0; i<n; ++i) {
+ char buf[64];
+ ident *name, *type_id;
+ entity *spill_ent;
+ ir_node *irn;
+
+ /* build entity */
+ snprintf(buf, sizeof(buf), "spill_slot_%d", i);
+ name = new_id_from_str(buf);
+ snprintf(buf, sizeof(buf), "spill_slot_type_%d", i);
+ type_id = new_id_from_str(buf);
+
+ spill_ent = new_entity(frame, name, new_type_primitive(type_id, ss[i]->largest_mode));
+
+ /* align */
+ offset = round_up2(offset, ss[i]->align);
+ /* set */
+ set_entity_offset_bytes(spill_ent, offset);
+ /* next possible offset */
+ offset += ss[i]->size;
+
+ pset_foreach(ss[i]->members, irn)
+ be_set_Spill_entity(irn, spill_ent);
+ }
+
+ /* set final size of stack frame */
+ set_type_size_bytes(frame, offset);