#include "bearch.h"
#include "beabi.h"
-struct _be_abi_call_flags_bits_t {
+struct be_abi_call_flags_bits_t {
unsigned left_to_right : 1; /**< Arguments are from left to right. */
unsigned store_args_sequential : 1; /**< Use sequential stores for arguments. */
unsigned try_omit_fp : 1; /**< Try to omit the frame pointer. */
unsigned frame_is_setup_on_call : 1; /**< Set to one, if there is already enough room on the stack for call args. */
};
-union _be_abi_call_flags_t {
+union be_abi_call_flags_t {
be_abi_call_flags_bits_t bits;
unsigned val;
};
-struct _be_abi_callbacks_t {
+struct be_abi_callbacks_t {
/**
* Initialize the callback object.
* @param call The call object.
/**
* Set the flags for a call.
* @param call The call.
- * @param flags Some flags to be set.
+ * @param flags Some flags to be set.
* @param cb The call callbacks for that call.
* @note The ABI phase might change the flags due to analysis.
*/
be_abi_irg_t *be_abi_introduce(ir_graph *irg);
/**
- * Fix the stack bias for all nodes accessing the stack frame using the
- * stack pointer.
+ * should be called by betranshlp.c while the graph is transformed
*/
-void be_abi_fix_stack_bias(ir_graph *irg);
-void be_abi_free(ir_graph *irg);
+void be_abi_transform_fixup(ir_graph *irg);
-/**
- * Rewire all stack modifying nodes and their users to assure SSA property.
- * @param env The abi
- */
-void be_abi_fix_stack_nodes(ir_graph *irg);
-
-/**
- * Put the registers which are forbidden specifically for this IRG in a bitset.
- */
-void be_abi_put_ignore_regs(be_abi_irg_t *abi, const arch_register_class_t *cls, bitset_t *bs);
-
-void be_abi_set_non_ignore_regs(be_abi_irg_t *abi, const arch_register_class_t *cls, unsigned *raw_bitset);
+void be_abi_free(ir_graph *irg);
ir_node *be_abi_get_callee_save_irn(be_abi_irg_t *abi, const arch_register_t *reg);
ir_node *be_abi_get_ignore_irn(be_abi_irg_t *abi, const arch_register_t *reg);
-#define be_abi_reg_map_get(map, reg) pmap_get((map), (void *) (reg))
-#define be_abi_reg_map_set(map, reg, irn) pmap_insert((map), (void *) (reg), (irn))
+static inline ir_node *be_abi_reg_map_get(pmap *map, const arch_register_t *reg)
+{
+ return (ir_node*)pmap_get(map, reg);
+}
+
+static inline void be_abi_reg_map_set(pmap *map, const arch_register_t* reg,
+ ir_node *node)
+{
+ pmap_insert(map, reg, node);
+}
#endif