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