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