* Position numbers for the be_Spill inputs.
*/
enum {
- be_pos_Spill_val = 0
+ be_pos_Spill_frame = 0,
+ be_pos_Spill_val = 1
};
/**
* Make a new Spill node.
*/
-ir_node *be_new_Spill(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, ir_node *node_to_spill);
+ir_node *be_new_Spill(const arch_register_class_t *cls, const arch_register_class_t *cls_frame,
+ ir_graph *irg, ir_node *bl, ir_node *frame, ir_node *to_spill);
/**
* Position numbers for the be_Reload inputs.
*/
enum {
- be_pos_Reload_mem = 0
+ be_pos_Reload_frame = 0,
+ be_pos_Reload_mem = 1
};
/**
* Make a new Reload node.
*/
-ir_node *be_new_Reload(const arch_register_class_t *cls, ir_graph *irg, ir_node *bl, ir_node *spill_node, ir_mode *mode);
+ir_node *be_new_Reload(const arch_register_class_t *cls, const arch_register_class_t *cls_frame,
+ ir_graph *irg, ir_node *bl, ir_node *frame, ir_node *mem, ir_mode *mode);
/**
* Position numbers for the be_Copy inputs.
int be_is_IncSP(const ir_node *irn);
int be_is_SetSP(const ir_node *irn);
int be_is_AddSP(const ir_node *irn);
+int be_is_SubSP(const ir_node *irn);
int be_is_RegParams(const ir_node *irn);
int be_is_StackParam(const ir_node *irn);
int be_is_FrameAddr(const ir_node *irn);
*
* Returns the frame entity used by the be node
*/
-ir_entity* be_get_frame_entity(const ir_node *irn);
+ir_entity *be_get_frame_entity(const ir_node *irn);
+
+/**
+ * Returns the frame offset of this node.
+ */
+int be_get_frame_offset(const ir_node *irn);
ir_node* be_get_Reload_mem(const ir_node *irn);
+ir_node *be_get_Reload_frame(const ir_node *irn);
ir_node* be_get_Spill_val(const ir_node *irn);
+ir_node *be_get_Spill_frame(const ir_node *irn);
void be_set_MemPerm_in_entity(const ir_node *irn, int n, ir_entity* ent);
ir_entity *be_get_MemPerm_in_entity(const ir_node *irn, int n);