10 #ifndef FIRM_TYPEREP_H 11 #define FIRM_TYPEREP_H 15 #include "firm_types.h" 417 #define IR_VTABLE_NUM_NOT_SET ((unsigned)(-1)) 474 #define IR_VA_START_PARAMETER_NUMBER ((size_t)-1) 666 typedef enum ptr_access_kind {
669 ptr_access_write = 2,
670 ptr_access_rw = ptr_access_read|ptr_access_write,
671 ptr_access_store = 4,
672 ptr_access_all = ptr_access_rw|ptr_access_store
674 ENUM_BITSET(ptr_access_kind)
746 #define is_SuperClass_of(high, low) is_SubClass_of(low, high) 753 #define is_SuperClass_ptr_of(low, high) is_SubClass_ptr_of(high, low) 887 FIRM_API
void ir_print_type(
char *buffer,
size_t buffer_size,
1029 #define INVALID_MEMBER_INDEX ((size_t)-1) 1248 #define cc_bits (0xFF000000) 1251 #define cc_cdecl_set (0) 1253 #define cc_stdcall_set cc_callee_clear_stk 1255 #define cc_fastcall_set (cc_reg_param|cc_callee_clear_stk) 1260 #define IS_CDECL(cc_mask) (((cc_mask) & cc_bits) == cc_cdecl_set) 1265 #define IS_STDCALL(cc_mask) (((cc_mask) & cc_bits) == cc_stdcall_set) 1270 #define IS_FASTCALL(cc_mask) (((cc_mask) & cc_bits) == cc_fastcall_set) 1275 #define SET_CDECL(cc_mask) (((cc_mask) & ~cc_bits) | cc_cdecl_set) 1280 #define SET_STDCALL(cc_mask) (((cc_mask) & ~cc_bits) | cc_stdcall_set) 1285 #define SET_FASTCALL(cc_mask) (((cc_mask) & ~cc_bits) | cc_fastcall_set) inh_transitive_closure_state
The state of the transitive closure.
ir_type * get_code_type(void)
Returns the code type.
unsigned get_array_size(const ir_type *array)
Returns the size (number of elements) of an array.
ir_mode * get_type_mode(const ir_type *tp)
Returns the mode of a type.
int( compare_types_func_t)(const void *tp1, const void *tp2)
Type for a function that compares two types.
tp_opcode get_type_opcode(const ir_type *type)
Returns opcode of type type.
The callee clears the stack.
ir_label_t get_entity_label(const ir_entity *ent)
Returns label number of an entity with code type.
void set_entity_linkage(ir_entity *entity, ir_linkage linkage)
Sets the linkage flags of entity entity to linkage.
const char * get_type_state_name(ir_type_state s)
Returns a human readable string for the enum entry.
void type_walk_irg(ir_graph *irg, type_walk_func *pre, type_walk_func *post, void *env)
Walks over all type information reachable from an ir graph.
int entity_not_visited(const ir_entity *ent)
Returns true if this entity was not visited.
The address of this entity was taken.
size_t get_entity_overwrites_index(const ir_entity *ent, ir_entity *overwritten)
Returns index of overwritten in list of entities overwriting entity ent.
void set_entity_vtable_number(ir_entity *ent, unsigned vtable_number)
Sets the entity vtable number.
void set_entity_visibility(ir_entity *entity, ir_visibility visibility)
Sets visibility class of an entity.
ir_entity * get_entity_trans_overwrites_first(const ir_entity *ent)
Start iteration over all transitive overwritten entities, overwritten by entity ent.
ir_visibility
Visibility classes for entities.
ir_linkage get_entity_linkage(const ir_entity *entity)
Returns the linkage of an entity.
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.
unsigned get_type_size(const ir_type *tp)
Returns the size of a type in bytes.
size_t get_entity_parameter_number(const ir_entity *entity)
Returns the parameter number of the parameter which entity represents.
void add_entity_additional_properties(ir_entity *ent, mtp_additional_properties flag)
Sets additional graph properties.
void remove_entity_linkage(ir_entity *entity, ir_linkage linkage)
Remove linkage flags linkage from entity entity.
initializer containing a tarval
ir_type * get_entity_owner(const ir_entity *ent)
Returns the owner of the entity.
ir_entity * get_struct_member(const ir_type *strct, size_t pos)
Returns the member at position pos, pos < n_member.
unsigned get_method_calling_convention(const ir_type *method)
Returns the calling convention of an entities graph.
void set_entity_aligned(ir_entity *ent, ir_align a)
Sets indication whether entity is aligned in memory.
int is_method_entity(const ir_entity *ent)
Returns true if the entity is a method entity.
size_t get_union_member_index(ir_type const *uni, ir_entity const *member)
Returns index of member in uni, -1 if not contained.
ir_initializer_t * create_initializer_compound(size_t n_entries)
Creates a compound initializer which holds n_entries entries.
int entity_has_additional_properties(const ir_entity *entity)
Return true if this entity can be queried for additional properties.
ir_type * new_type_union(ident *name)
Creates a new type union.
const char * get_entity_name(const ir_entity *ent)
Returns the name of an entity.
void set_entity_ld_ident(ir_entity *ent, ident *ld_ident)
Sets the mangled name of the entity.
int is_Primitive_type(const ir_type *primitive)
Returns true if a type is a primitive type.
int is_atomic_type(const ir_type *tp)
Checks whether a type is atomic.
initializes type with default values (usually 0)
size_t get_union_n_members(const ir_type *uni)
Returns the number of unioned types of this union.
void set_type_dbg_info(ir_type *tp, type_dbg_info *db)
Sets the debug information of a type.
The entity was written to.
The entity may be removed when it isn't referenced anywhere in the compilation unit even if it is exp...
size_t get_class_subtype_index(const ir_type *clss, const ir_type *subclass)
Returns the index to access subclass as subtype of class.
ir_type * clone_frame_type(ir_type *type)
Makes a clone of a frame type.
void ir_print_type(char *buffer, size_t buffer_size, const ir_type *tp)
construct a string representing the type.
void set_irp_inh_transitive_closure_state(inh_transitive_closure_state s)
Sets the transitive closure of sub/superclass state for the whole program.
initializer containing an ir_node from the const-code irg
void set_entity_link(ir_entity *ent, void *l)
Stores new intermediate information.
void set_entity_label(ir_entity *ent, ir_label_t label)
Sets label number of an entity with code type.
void set_type_size(ir_type *tp, unsigned size)
Sets the size of a type in bytes.
The layout is fixed, all component/member entities have an offset assigned.
const char * get_compound_name(const ir_type *tp)
Returns compound identifier as c-string.
int is_compound_entity(const ir_entity *ent)
Returns true if the type of the entity is a class, structure, array or union type.
void set_entity_bitfield_offset(ir_entity *entity, unsigned offset)
Sets the offset in bits to the base for a bitfield.
void remove_entity_overwrittenby(ir_entity *ent, ir_entity *overwrites)
Removes entry overwrites in list of entities overwritten by ent.
int is_Array_type(const ir_type *array)
Returns true if a type is an array type.
ir_type * get_method_res_type(const ir_type *method, size_t pos)
Returns the return type of a method type at position pos.
Closure invalid, but can be accessed.
ir_type * get_class_trans_supertype_next(const ir_type *tp)
Returns next type in a supertype iteration started by get_class_trans_supertype_first() ...
ir_type * get_pointer_points_to_type(const ir_type *pointer)
Returns the type to which a pointer points to.
const char * get_volatility_name(ir_volatility var)
Returns the name of the volatility.
void class_walk_super2sub(class_walk_func *pre, class_walk_func *post, void *env)
Same as type_walk_super2sub, but visits only class types.
calling_convention
Calling conventions: lower 24 bits are the number of register parameters, upper 8 encode the calling ...
const char * get_align_name(ir_align a)
Returns the name of the alignment.
size_t get_initializer_compound_n_entries(const ir_initializer_t *initializer)
Returns the number of entries in a compound initializer.
The layout of this type is not defined.
void compute_inh_transitive_closure(void)
Compute transitive closure of the subclass/superclass and overwrites/overwrittenby relation...
ir_type * new_type_primitive(ir_mode *mode)
Creates a new primitive type.
const char * get_initializer_kind_name(ir_initializer_kind_t ini)
Returns the name of the initializer kind.
ir_tarval * get_initializer_tarval_value(const ir_initializer_t *initialzier)
Returns the value contained in a tarval initializer.
int is_code_type(const ir_type *tp)
Checks whether a type is a code type.
int entity_is_externally_visible(const ir_entity *entity)
Returns 1 if the entity is visible outside the current compilation unit or to unknown callers (like a...
int is_frame_type(const ir_type *tp)
Checks, whether a type is a frame type.
type_dbg_info * get_type_dbg_info(const ir_type *tp)
Returns the debug information of a type.
The entity is visible across compilation units, but not across modules.
ir_type * new_type_frame(void)
Makes a new frame type.
void set_entity_initializer(ir_entity *entity, ir_initializer_t *initializer)
Sets the initializer of an entity.
The linker will try to merge entities with same name from different compilation units.
ir_type_state get_type_state(const ir_type *tp)
Returns the type layout state of a type.
ir_entity * new_alias_entity(ir_type *owner, ident *name, ir_entity *alias, ir_type *type, ir_visibility visibility)
Creates a new entity aliasing another entity.
ir_type * new_type_struct(ident *name)
Creates a new type struct.
struct ir_graph ir_graph
Procedure Graph.
size_t get_compound_member_index(ir_type const *tp, ir_entity const *member)
Returns index of member in tp, -1 if not contained.
ir_entity * new_entity(ir_type *owner, ident *name, ir_type *tp)
Creates a new entity.
const char * get_type_opcode_name(tp_opcode opcode)
Returns the name of the type opcode opcode.
mtp_additional_properties
Additional method type properties: Tell about special properties of a method type.
int is_Method_type(const ir_type *method)
Returns true if a type is a method type.
void set_type_state(ir_type *tp, ir_type_state state)
Sets the type layout state of a type.
ir_graph * get_entity_linktime_irg(const ir_entity *ent)
Return the method graph the method entity points to after linking.
int tr_verify(void)
Walks the type information and performs a set of sanity checks.
void type_walk_super(type_walk_func *pre, type_walk_func *post, void *env)
Walker for class types in inheritance order.
ir_initializer_t * create_initializer_const(ir_node *value)
Creates an initializer containing a reference to a node on the const-code irg.
void type_walk_super2sub(type_walk_func *pre, type_walk_func *post, void *env)
Touches every class in specified order:
void mark_entity_visited(ir_entity *ent)
Marks entity as visited.
void entity_walk_func(ir_entity *ent, void *env)
the entity walk function.
Closure computed and valid.
int check_entity(const ir_entity *ent)
Check an entity.
size_t get_class_n_subtypes(const ir_type *clss)
Returns the number of subtypes.
long get_entity_nr(const ir_entity *ent)
Outputs a unique number for this entity.
void type_walk(type_walk_func *pre, type_walk_func *post, void *env)
Touches every type and entity in unspecified order.
int is_overwritten_by(ir_entity *high, ir_entity *low)
Returns true if high is (transitively) overwritten by low.
unsigned get_type_alignment(const ir_type *tp)
Returns the alignment of a type in bytes.
ir_type * get_array_element_type(const ir_type *array)
Returns the array element type.
dbg_info * get_entity_dbg_info(const ir_entity *ent)
Returns the debug information of an entity.
int is_segment_type(const ir_type *tp)
Checks, whether a type is a frame type.
ir_entity * new_parameter_entity(ir_type *owner, size_t pos, ir_type *type)
Creates a new entity corresponding to a function parameter.
size_t get_entity_overwrittenby_index(const ir_entity *ent, ir_entity *overwrites)
Returns index of overwrites in list of entities overwritten by entity ent.
ir_type * new_type_pointer(ir_type *points_to)
Creates a new type pointer.
void type_walk_func(ir_type *type, ir_entity *entity, void *env)
Type of argument functions for type walkers.
Transmit floating point parameters in registers, else the stack is used.
ir_visited_t get_entity_visited(const ir_entity *ent)
Returns the entities visited counter.
ir_entity * get_entity_overwrites(const ir_entity *ent, size_t pos)
Returns entry pos in list of entities overwriting entity ent.
ir_entity * get_class_member(const ir_type *clss, size_t pos)
Returns the member at position pos, 0 <= pos < n_member.
This has the same semantic as visibility_local.
ir_linkage
linkage specifies how the linker treats symbols
int check_type(const ir_type *tp)
Checks a type for memory corruption, dangling pointers and consistency.
void set_type_visited(ir_type *tp, ir_visited_t num)
Sets the visited counter of a type to num.
The entity is visible across compilation units and modules and cannot be overridden by other modules...
int entity_has_ld_ident(const ir_entity *entity)
returns 1 if the entity has an ld_ident set explicitely
The entity is visible across compilation units.
The last non-register parameter is transmitted on top of the stack.
size_t get_struct_member_index(ir_type const *strct, ir_entity const *member)
Returns index of member in strct, -1 if not contained.
ident * get_entity_ld_ident(const ir_entity *ent)
Returns the mangled name of the entity.
The method returns a compound type.
struct ir_tarval ir_tarval
Target Machine Value.
void add_entity_linkage(ir_entity *entity, ir_linkage linkage)
Adds linkage flags linkage to entity entity.
size_t get_method_n_params(const ir_type *method)
Returns the number of parameters of this method.
ir_initializer_t * get_initializer_compound_value(const ir_initializer_t *initializer, size_t index)
Returns the value with index index of a compound initializer.
int is_parameter_entity(const ir_entity *entity)
returns true if a given entity is a parameter_entity representing the address of a function parameter...
ir_initializer_t * get_initializer_null(void)
Returns the null initializer (there is only one instance of it in a program )
void set_entity_additional_properties(ir_entity *ent, mtp_additional_properties prop)
Sets the mask of the additional graph properties.
void set_entity_overwrites(ir_entity *ent, size_t pos, ir_entity *overwritten)
Sets entry pos in list of entities overwriting entity ent.
struct dbg_info dbg_info
Source Reference.
struct ir_node ir_node
Procedure Graph Node.
size_t get_class_supertype_index(const ir_type *clss, const ir_type *super_clss)
Returns the index to access superclass as supertype of class.
The method did not allocate an own stack frame, instead the caller must reserve size on its own stack...
unsigned get_entity_alignment(const ir_entity *entity)
Returns alignment of entity in bytes.
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.
int is_alias_entity(const ir_entity *ent)
Returns true if the entity is an alias entity.
ir_type * get_class_subtype(const ir_type *clss, size_t pos)
Returns the subtype at position pos, 0 <= pos < n_subtype.
int is_unknown_entity(const ir_entity *entity)
Tests whether entity entity is (the) unknown entity.
union ir_initializer_t ir_initializer_t
Initializer (for entities)
struct ir_mode ir_mode
SSA Value mode.
size_t get_entity_n_overwrites(const ir_entity *ent)
Returns the number of entities in the list of entities that overwrite entity ent. ...
ir_entity * new_global_entity(ir_type *segment, ident *ld_name, ir_type *type, ir_visibility visibility, ir_linkage linkage)
Creates a new global entity.
size_t get_compound_n_members(const ir_type *tp)
Returns the number of elements in a Firm compound type.
The entity is local to the compilation unit.
ir_type * get_unknown_type(void)
Returns the unknown type.
ir_entity * get_entity_trans_overwrittenby_next(const ir_entity *ent)
Returns next entity in a overwrittenby iteration started by get_entity_trans_overwrittenby_first() ...
void set_entity_visited(ir_entity *ent, ir_visited_t num)
Sets the entities visited counter.
unsigned get_entity_bitfield_offset(const ir_entity *entity)
For bitfields, returns the offset in bits to the bitfield base.
void set_master_type_visited(ir_visited_t val)
Sets type visited reference counter.
void free_entity(ir_entity *ent)
Frees the entity.
int is_Pointer_type(const ir_type *pointer)
Returns true if a type is a pointer type.
The entity does not need to have an address that is different from other entities.
Transmit parameters in registers, else the stack is used.
ir_visibility get_entity_visibility(const ir_entity *entity)
Returns the visibility class of an entity.
void set_initializer_compound_value(ir_initializer_t *initializer, size_t index, ir_initializer_t *value)
Sets entry with index index to the initializer value.
size_t get_method_n_ress(const ir_type *method)
Returns the number of results of a method type.
unsigned get_entity_bitfield_size(const ir_entity *entity)
Returns the size in bits for a bitfield, 0 if entity is not a bitfield.
void remove_class_supertype(ir_type *clss, ir_type *supertype)
Finds supertype in the list of supertypes and removes it.
ir_align get_entity_aligned(const ir_entity *ent)
Returns indication whether entity is aligned in memory.
size_t get_class_member_index(ir_type const *clss, ir_entity const *mem)
Returns index of mem in clss, INVALID_MEMBER_INDEX if not contained.
mtp_additional_properties get_method_additional_properties(const ir_type *method)
Returns the mask of the additional graph properties.
void walk_types_entities(ir_type *tp, entity_walk_func *doit, void *env)
Walks over all entities in the type.
unsigned get_method_n_regparams(ir_type *method)
Returns the number of registers parameters, 0 means default.
const char ident
Identifier.
long get_type_nr(const ir_type *tp)
Outputs a unique number for this type if libfirm is compiled for debugging, (configure with –enable-...
void * get_entity_link(const ir_entity *ent)
Returns the stored intermediate information.
Some entity uses are potentially hidden from the compiler.
void * get_type_link(const ir_type *tp)
Returns the associated link field of a type.
void set_type_link(ir_type *tp, void *l)
Sets the associated link field of a type.
a piece of code (a basic block)
int entity_has_definition(const ir_entity *entity)
Returns 1 if the entity has a definition (initializer) in the current compilation unit...
void set_class_subtype(ir_type *clss, ir_type *subtype, size_t pos)
Sets the subtype at position pos, 0 <= pos < n_subtype.
ir_entity_usage get_entity_usage(const ir_entity *ent)
Returns the entity usage.
ident * get_entity_ident(const ir_entity *ent)
Returns the ident of an entity.
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.
ir_entity * get_entity_trans_overwrites_next(const ir_entity *ent)
Returns next entity in a overwrites iteration started by get_entity_trans_overwrites_first() ...
Closure is not computed, can not be accessed.
ir_visited_t get_master_type_visited(void)
Returns type visited reference counter.
ir_type * new_type_array(ir_type *element_type, unsigned n_elements)
Create a new array type with n_elements of type element_type.
tp_opcode
An enum for the type kinds.
void set_entity_alias(ir_entity *alias, ir_entity *aliased)
Sets the aliased entity of an alias entity.
void remove_compound_member(ir_type *compound, ir_entity *entity)
Remove a member from a compound type.
size_t get_struct_n_members(const ir_type *strct)
Returns the number of members of this struct.
int is_Union_type(const ir_type *uni)
Returns true if a type is a union type.
ir_initializer_kind_t
the kind (type) of an initializer
ir_entity * get_entity_trans_overwrittenby_first(const ir_entity *ent)
Start iteration over all entities that transitive overwrite entity ent.
struct type_dbg_info type_dbg_info
Source Type Reference.
unsigned get_entity_vtable_number(const ir_entity *ent)
Returns the entity vtable number.
ident * get_compound_ident(const ir_type *tp)
Returns the identifier of a compound type.
ir_type * new_type_class(ident *name)
Creates a new class type.
The entity was read but with a wrong mode (an implicit reinterpret cast)
ir_entity * get_compound_member(const ir_type *tp, size_t pos)
Returns the member of a Firm compound type at position pos.
void set_entity_dbg_info(ir_entity *ent, dbg_info *db)
Sets the debug information of an entity.
ir_type * get_class_trans_subtype_next(const ir_type *tp)
Returns next type in a subtype iteration started by get_class_trans_subtype_first() ...
ir_entity * clone_entity(ir_entity const *old, ident *name, ir_type *owner)
Create a new entity with attributes copied from an existing entity.
ir_initializer_t * get_entity_initializer(const ir_entity *entity)
Returns the initializer of an entity.
Do not generate code even if the entity has a graph or initialization data attached.
ir_type * get_class_trans_subtype_first(const ir_type *tp)
Start iteration over all transitive subtypes of tp.
int is_compound_type(const ir_type *tp)
Checks whether a type is a compound type.
A symbol whose definition won't change in a program.
void set_entity_parameter_number(ir_entity *entity, size_t n)
Sets the parameter number of the parameter which entity represents.
void set_type_alignment(ir_type *tp, unsigned align)
Sets the alignment of a type in bytes.
ir_initializer_kind_t get_initializer_kind(const ir_initializer_t *initializer)
Returns the kind of an initializer.
const char * get_entity_ld_name(const ir_entity *ent)
Returns the mangled name of the entity as a string.
ir_entity * get_unknown_entity(void)
Returns the unknown entity .
int is_unknown_type(const ir_type *type)
Checks whether type type is the unknown type.
void set_entity_owner(ir_entity *ent, ir_type *owner)
Sets the owner field in entity to owner.
void free_type(ir_type *tp)
Frees the memory used by the type.
void class_walk_func(ir_type *clss, void *env)
The class walk function.
ir_type * get_class_trans_supertype_first(const ir_type *tp)
Start iteration over all transitive supertypes of tp.
int entity_visited(const ir_entity *ent)
Returns true if this entity was visited.
size_t get_class_n_members(const ir_type *clss)
Returns the number of members of this class.
ir_visited_t get_type_visited(const ir_type *tp)
Returns the visited counter of a type.
ir_type * get_entity_type(const ir_entity *ent)
Returns the type of an entity.
inh_transitive_closure_state get_irp_inh_transitive_closure_state(void)
Returns the transitive closure of sub/superclass state for the whole program.
int is_SubClass_of(const ir_type *low, const ir_type *high)
Returns true if low is subclass of high.
void set_class_supertype(ir_type *clss, ir_type *supertype, size_t pos)
Sets the supertype at position pos, 0 <= pos < n_supertype.
list of initializers used to initialize a compound or array type
ir_volatility get_entity_volatility(const ir_entity *ent)
Returns the volatility of an entity.
ir_type * get_class_supertype(const ir_type *clss, size_t pos)
Returns the supertype at position pos, 0 <= pos < n_supertype.
ir_node * get_initializer_const_value(const ir_initializer_t *initializer)
Returns the value contained in a const initializer.
void set_entity_type(ir_entity *ent, ir_type *tp)
Sets the type of an entity.
void remove_entity_overwrites(ir_entity *ent, ir_entity *overwritten)
Remove overwritten from list of entities overwriting entity ent.
size_t get_entity_n_overwrittenby(const ir_entity *ent)
Returns number of entities overwritten by ent.
int get_entity_offset(const ir_entity *entity)
Returns the offset of an entity (in a compound) in bytes.
ir_entity * get_union_member(const ir_type *uni, size_t pos)
Returns the entity at position pos of a union.
void set_entity_offset(ir_entity *entity, int offset)
Sets the offset of an entity (in a compound) in bytes.
int is_Class_type(const ir_type *clss)
Returns true if a type is a class type.
void set_entity_volatility(ir_entity *ent, ir_volatility vol)
Sets the volatility of an entity.
ir_entity_usage
Bitfield type indicating the way an entity is used.
void set_entity_ident(ir_entity *ent, ident *id)
Sets the ident of the entity.
int is_SubClass_ptr_of(ir_type *low, ir_type *high)
Subclass check for pointers to classes.
void invalidate_irp_inh_transitive_closure_state(void)
Sets the transitive closure of sub/superclass state for the whole program to inh_transitive_closure_i...
void add_class_supertype(ir_type *clss, ir_type *supertype)
Adds supertype as supertype to class.
ir_type_state
The state of the type layout.
void mark_type_visited(ir_type *tp)
Sets visited field in type to type_visited.
void set_entity_usage(ir_entity *ent, ir_entity_usage flag)
Sets/resets the state of the address taken flag of an entity.
void free_inh_transitive_closure(void)
Free memory occupied by the transitive closure information.
void add_class_subtype(ir_type *clss, ir_type *subtype)
Adds subtype as subtype to clss.
struct ir_entity ir_entity
Entity.
void default_layout_compound_type(ir_type *tp)
Layout members of a compound type in the default way (as determined by the target ABI)...
void set_pointer_points_to_type(ir_type *pointer, ir_type *tp)
Sets the type to which a pointer points to.
The first parameter is a this pointer and is transmitted in a special way.
int is_method_variadic(ir_type const *method)
Returns the variadicity of a method.
void add_entity_overwrites(ir_entity *ent, ir_entity *overwritten)
Adds entity ent to the list of entities that overwrite overwritten.
ir_entity * resolve_ent_polymorphy(ir_type *dynamic_class, ir_entity *static_ent)
Resolve polymorphism in the inheritance relation.
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.
size_t get_class_n_supertypes(const ir_type *clss)
Returns the number of supertypes.
The entity is a weak symbol.
ir_graph * get_entity_irg(const ir_entity *ent)
Return the method graph of a method entity.
ir_entity * get_entity_alias(const ir_entity *alias)
Returns the entity aliased by an alias entity.
mtp_additional_properties get_entity_additional_properties(const ir_entity *ent)
Returns the mask of the additional entity properties.
void set_entity_bitfield_size(ir_entity *entity, unsigned size)
Sets the size in bits for a bitfield.
Special code for the Unknown type.
void set_entity_overwrittenby(ir_entity *ent, size_t pos, ir_entity *overwrites)
Sets entry pos in list of entities overwritten by entity ent.
void set_entity_alignment(ir_entity *entity, unsigned alignment)
Allows you to override the type alignment for an entity.
void inc_master_type_visited(void)
Increments type visited reference counter by one.
void remove_class_subtype(ir_type *clss, ir_type *subtype)
Finds subtype in the list of subtypes and removes it.
int type_visited(const ir_type *tp)
Returns non-zero if the type is already visited.
struct ir_type ir_type
Type.
int is_class_trans_subtype(const ir_type *tp, const ir_type *subtp)
Check if subtp is a subtype of tp.
ir_entity * get_entity_overwrittenby(const ir_entity *ent, size_t pos)
Return entry pos in list of entities overwritten by entity ent.
int is_Struct_type(const ir_type *strct)
Returns true if a type is a struct type.
ir_initializer_t * create_initializer_tarval(ir_tarval *tv)
Creates an initializer containing a single tarval value.