3 * Backend ABI implementation.
9 #include "firm_types.h"
16 unsigned left_to_right :1; /**< Arguments are from left to right. */
17 unsigned store_args_sequential :1; /**< Use sequential stores for arguments. */
18 unsigned try_omit_fp :1; /**< Try to omit the frame pointer. */
19 unsigned fp_free :1; /**< The function can use any register as frame pointer. */
20 unsigned call_has_imm :1; /**< A call can take the callee's address as an immediate. */
21 } be_abi_call_flags_bits_t;
24 be_abi_call_flags_bits_t bits;
26 } be_abi_call_flags_t;
28 void be_abi_call_set_flags(be_abi_call_t *call, be_abi_call_flags_t flags, ir_type *add_frame);
29 void be_abi_call_param_stack(be_abi_call_t *call, int pos);
30 void be_abi_call_param_reg(be_abi_call_t *call, int pos, const arch_register_t *reg);
31 void be_abi_call_res_reg(be_abi_call_t *call, int pos, const arch_register_t *reg);
33 be_abi_irg_t *be_abi_introduce(be_irg_t *bi);
34 void be_abi_fix_stack_bias(be_abi_irg_t *env);
35 void be_abi_fix_stack_nodes(be_abi_irg_t *env);
36 void be_abi_free(be_abi_irg_t *abi);
38 ir_node *be_abi_get_callee_save_irn(be_abi_irg_t *abi, const arch_register_t *reg);