libFirm
|
A method type represents a method, function or procedure type. More...
Macros | |
#define | cc_bits (0xFF000000) |
#define | cc_cdecl_set (0) |
cdecl calling convention More... | |
#define | cc_stdcall_set cc_callee_clear_stk |
stdcall calling convention More... | |
#define | cc_fastcall_set (cc_reg_param|cc_callee_clear_stk) |
fastcall calling convention More... | |
#define | IS_CDECL(cc_mask) (((cc_mask) & cc_bits) == cc_cdecl_set) |
check for the CDECL calling convention More... | |
#define | IS_STDCALL(cc_mask) (((cc_mask) & cc_bits) == cc_stdcall_set) |
check for the STDCALL calling convention More... | |
#define | IS_FASTCALL(cc_mask) (((cc_mask) & cc_bits) == cc_fastcall_set) |
check for the FASTCALL calling convention More... | |
#define | SET_CDECL(cc_mask) (((cc_mask) & ~cc_bits) | cc_cdecl_set) |
Sets the CDECL convention bits. More... | |
#define | SET_STDCALL(cc_mask) (((cc_mask) & ~cc_bits) | cc_stdcall_set) |
Sets the STDCALL convention bits. More... | |
#define | SET_FASTCALL(cc_mask) (((cc_mask) & ~cc_bits) | cc_fastcall_set) |
Sets the FASTCALL convention bits. More... | |
Enumerations | |
enum | mtp_additional_properties { mtp_no_property = 0, mtp_property_no_write = 1u << 0, mtp_property_pure = 1u << 1, mtp_property_noreturn = 1u << 2, mtp_property_terminates = 1u << 3, mtp_property_nothrow = 1u << 4, mtp_property_naked = 1u << 5, mtp_property_malloc = 1u << 6, mtp_property_returns_twice = 1u << 7, mtp_property_private = 1u << 8, mtp_property_always_inline = 1u << 9, mtp_property_noinline = 1u << 10, mtp_property_inline_recommended = 1u << 11, mtp_temporary = 1u << 12 } |
Additional method type properties: Tell about special properties of a method type. More... | |
enum | calling_convention { cc_reg_param = 0x01000000, cc_last_on_top = 0x02000000, cc_callee_clear_stk = 0x04000000, cc_this_call = 0x08000000, cc_compound_ret = 0x10000000, cc_frame_on_caller_stk = 0x20000000, cc_fpreg_param = 0x40000000 } |
Calling conventions: lower 24 bits are the number of register parameters, upper 8 encode the calling conventions. More... | |
Functions | |
ir_type * | new_type_method (size_t n_param, size_t n_res, int is_variadic, unsigned cc_mask, mtp_additional_properties property_mask) |
Create a new method type. More... | |
size_t | get_method_n_params (const ir_type *method) |
Returns the number of parameters of this method. More... | |
ir_type * | get_method_param_type (const ir_type *method, size_t pos) |
Returns the type of the parameter at position pos of a method. More... | |
void | set_method_param_type (ir_type *method, size_t pos, ir_type *tp) |
Sets the type of the parameter at position pos of a method. More... | |
size_t | get_method_n_ress (const ir_type *method) |
Returns the number of results of a method type. More... | |
ir_type * | get_method_res_type (const ir_type *method, size_t pos) |
Returns the return type of a method type at position pos. More... | |
void | set_method_res_type (ir_type *method, size_t pos, ir_type *tp) |
Sets the type of the result at position pos of a method. More... | |
int | is_method_variadic (ir_type const *method) |
Returns the variadicity of a method. More... | |
mtp_additional_properties | get_method_additional_properties (const ir_type *method) |
Returns the mask of the additional graph properties. More... | |
unsigned | get_method_calling_convention (const ir_type *method) |
Returns the calling convention of an entities graph. More... | |
unsigned | get_method_n_regparams (ir_type *method) |
Returns the number of registers parameters, 0 means default. More... | |
int | is_Method_type (const ir_type *method) |
Returns true if a type is a method type. More... | |
A method type represents a method, function or procedure type.
It contains a list of the parameter and result types, as these are part of the type description. These lists should not be changed by a optimization, as a change creates a new method type. Therefore optimizations should allocated new method types. The set_ routines are only for construction by a frontend.
#define cc_fastcall_set (cc_reg_param|cc_callee_clear_stk) |
#define cc_stdcall_set cc_callee_clear_stk |
#define IS_CDECL | ( | cc_mask | ) | (((cc_mask) & cc_bits) == cc_cdecl_set) |
#define IS_FASTCALL | ( | cc_mask | ) | (((cc_mask) & cc_bits) == cc_fastcall_set) |
#define IS_STDCALL | ( | cc_mask | ) | (((cc_mask) & cc_bits) == cc_stdcall_set) |
#define SET_CDECL | ( | cc_mask | ) | (((cc_mask) & ~cc_bits) | cc_cdecl_set) |
#define SET_FASTCALL | ( | cc_mask | ) | (((cc_mask) & ~cc_bits) | cc_fastcall_set) |
#define SET_STDCALL | ( | cc_mask | ) | (((cc_mask) & ~cc_bits) | cc_stdcall_set) |
enum calling_convention |
Calling conventions: lower 24 bits are the number of register parameters, upper 8 encode the calling conventions.
Additional method type properties: Tell about special properties of a method type.
Some of these may be discovered by analyses.
Definition at line 221 of file firm_types.h.
mtp_additional_properties get_method_additional_properties | ( | const ir_type * | method | ) |
Returns the mask of the additional graph properties.
unsigned get_method_calling_convention | ( | const ir_type * | method | ) |
Returns the calling convention of an entities graph.
size_t get_method_n_params | ( | const ir_type * | method | ) |
Returns the number of parameters of this method.
unsigned get_method_n_regparams | ( | ir_type * | method | ) |
Returns the number of registers parameters, 0 means default.
size_t get_method_n_ress | ( | const ir_type * | method | ) |
Returns the number of results of a method type.
Returns the type of the parameter at position pos of a method.
Returns the return type of a method type at position pos.
int is_Method_type | ( | const ir_type * | method | ) |
Returns true if a type is a method type.
Referenced by new_rd_Builtin(), and new_rd_Call().
int is_method_variadic | ( | ir_type const * | method | ) |
Returns the variadicity of a method.
ir_type* new_type_method | ( | size_t | n_param, |
size_t | n_res, | ||
int | is_variadic, | ||
unsigned | cc_mask, | ||
mtp_additional_properties | property_mask | ||
) |
Create a new method type.
n_param | the number of parameters |
n_res | the number of results |
is_variadic | whether the function is variadic |
cc_mask | the calling convention |
property_mask | the mask of the additional graph properties |
The arrays for the parameter and result types are not initialized by the constructor.
Sets the type of the parameter at position pos of a method.
Note: does not change the corresponding parameter entities (if there are any)