X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Fentity_t.h;h=cdd8aff43cbef8a544699928722ed5dfb0cdbb5a;hb=7a6c61deccd04d036508ccc18ebc5fbb001373d3;hp=2aa1a175684ee17c5708f93b4abbba9fa39f086f;hpb=ebdaa596d904a0651c8d794481288d2d629bdb3a;p=libfirm diff --git a/ir/tr/entity_t.h b/ir/tr/entity_t.h index 2aa1a1756..cdd8aff43 100644 --- a/ir/tr/entity_t.h +++ b/ir/tr/entity_t.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -31,7 +31,6 @@ #include "typerep.h" #include "type_t.h" #include "ident.h" -#include "pseudo_irg.h" #include "compound_path.h" typedef struct ir_initializer_base_t { @@ -43,7 +42,7 @@ typedef struct ir_initializer_base_t { */ typedef struct ir_initializer_compound_t { ir_initializer_base_t base; - unsigned n_initializers; + size_t n_initializers; ir_initializer_t *initializers[1]; } ir_initializer_compound_t; @@ -60,7 +59,7 @@ typedef struct ir_initializer_const_t { */ typedef struct ir_initializer_tarval_t { ir_initializer_base_t base; - tarval *value; + ir_tarval *value; } ir_initializer_tarval_t ; union ir_initializer_t { @@ -78,14 +77,11 @@ typedef struct compound_ent_attr { /**< paths corresponding to constant values. */ } compound_ent_attr; -/** A reserved value for "not yet set". */ -#define VTABLE_NUM_NOT_SET ((unsigned)(-1)) - /** The attributes for methods. */ typedef struct method_ent_attr { ir_graph *irg; /**< The corresponding irg if known. The ir_graph constructor automatically sets this field. */ - unsigned irg_add_properties; /**< Additional graph properties can be + mtp_additional_properties irg_add_properties; /**< Additional graph properties can be stored in a entity if no irg is available. */ unsigned vtable_number; /**< For a dynamically called method, the number assigned @@ -172,40 +168,41 @@ struct ir_entity { }; /** Initialize the entity module. */ -void firm_init_entity(void); +void ir_init_entity(void); +/** Cleanup entity module */ +void ir_finish_entity(void); /* ----------------------- inline functions ------------------------ */ -static inline int -_is_entity(const void *thing) { +static inline int _is_entity(const void *thing) +{ return get_kind(thing) == k_entity; } -static inline const char * -_get_entity_name(const ir_entity *ent) { +static inline const char *_get_entity_name(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return get_id_str(get_entity_ident(ent)); } -static inline ident * -_get_entity_ident(const ir_entity *ent) { +static inline ident *_get_entity_ident(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->name; } -static inline void -_set_entity_ident(ir_entity *ent, ident *id) { +static inline void _set_entity_ident(ir_entity *ent, ident *id) +{ assert(ent && ent->kind == k_entity); ent->name = id; } -static inline ir_type * -_get_entity_owner(const ir_entity *ent) { +static inline ir_type *_get_entity_owner(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->owner; } -static inline ident * -_get_entity_ld_ident(const ir_entity *ent) +static inline ident *_get_entity_ld_ident(const ir_entity *ent) { assert(ent && ent->kind == k_entity); if (ent->ld_name == NULL) @@ -213,144 +210,140 @@ _get_entity_ld_ident(const ir_entity *ent) return ent->ld_name; } -static inline void -_set_entity_ld_ident(ir_entity *ent, ident *ld_ident) { +static inline void _set_entity_ld_ident(ir_entity *ent, ident *ld_ident) +{ assert(ent && ent->kind == k_entity); ent->ld_name = ld_ident; } -static inline const char * -_get_entity_ld_name(const ir_entity *ent) { +static inline const char *_get_entity_ld_name(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return get_id_str(get_entity_ld_ident(ent)); } -static inline ir_type * -_get_entity_type(const ir_entity *ent) { +static inline ir_type *_get_entity_type(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->type; } -static inline void -_set_entity_type(ir_entity *ent, ir_type *type) { +static inline void _set_entity_type(ir_entity *ent, ir_type *type) +{ assert(ent && ent->kind == k_entity); ent->type = type; } -static inline ir_linkage -_get_entity_linkage(const ir_entity *ent) { +static inline ir_linkage _get_entity_linkage(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); - return ent->linkage; + return (ir_linkage) ent->linkage; } -static inline ir_volatility -_get_entity_volatility(const ir_entity *ent) { +static inline ir_volatility _get_entity_volatility(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); - return ent->volatility; + return (ir_volatility) ent->volatility; } -static inline void -_set_entity_volatility(ir_entity *ent, ir_volatility vol) { +static inline void _set_entity_volatility(ir_entity *ent, ir_volatility vol) +{ assert(ent && ent->kind == k_entity); ent->volatility = vol; } -static inline unsigned -_get_entity_alignment(const ir_entity *ent) { +static inline unsigned _get_entity_alignment(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->alignment; } -static inline void -_set_entity_alignment(ir_entity *ent, unsigned alignment) { +static inline void _set_entity_alignment(ir_entity *ent, unsigned alignment) +{ assert(ent && ent->kind == k_entity); ent->alignment = alignment; } -static inline ir_align -_get_entity_aligned(const ir_entity *ent) { +static inline ir_align _get_entity_aligned(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); - return ent->aligned; + return (ir_align) ent->aligned; } -static inline void -_set_entity_aligned(ir_entity *ent, ir_align a) { +static inline void _set_entity_aligned(ir_entity *ent, ir_align a) +{ assert(ent && ent->kind == k_entity); ent->aligned = a; } -static inline int -_is_entity_compiler_generated(const ir_entity *ent) { +static inline int _is_entity_compiler_generated(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->compiler_gen; } -static inline void -_set_entity_compiler_generated(ir_entity *ent, int flag) { +static inline void _set_entity_compiler_generated(ir_entity *ent, int flag) +{ assert(ent && ent->kind == k_entity); ent->compiler_gen = flag ? 1 : 0; } -static inline ir_entity_usage -_get_entity_usage(const ir_entity *ent) { +static inline ir_entity_usage _get_entity_usage(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); - return ent->usage; + return (ir_entity_usage) ent->usage; } -static inline void -_set_entity_usage(ir_entity *ent, ir_entity_usage state) { +static inline void _set_entity_usage(ir_entity *ent, ir_entity_usage state) +{ assert(ent && ent->kind == k_entity); ent->usage = state; } -static inline int -_get_entity_offset(const ir_entity *ent) { +static inline int _get_entity_offset(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->offset; } -static inline void -_set_entity_offset(ir_entity *ent, int offset) { +static inline void _set_entity_offset(ir_entity *ent, int offset) +{ assert(ent && ent->kind == k_entity); ent->offset = offset; } -static inline unsigned char -_get_entity_offset_bits_remainder(const ir_entity *ent) { +static inline unsigned char _get_entity_offset_bits_remainder(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->offset_bit_remainder; } -static inline void -_set_entity_offset_bits_remainder(ir_entity *ent, unsigned char offset) { +static inline void _set_entity_offset_bits_remainder(ir_entity *ent, unsigned char offset) +{ assert(ent && ent->kind == k_entity); ent->offset_bit_remainder = offset; } -static inline void * -_get_entity_link(const ir_entity *ent) { +static inline void *_get_entity_link(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); return ent->link; } -static inline void -_set_entity_link(ir_entity *ent, void *l) { +static inline void _set_entity_link(ir_entity *ent, void *l) +{ assert(ent && ent->kind == k_entity); ent->link = l; } -static inline ir_graph * -_get_entity_irg(const ir_entity *ent) { - ir_graph *irg; +static inline ir_graph *_get_entity_irg(const ir_entity *ent) +{ assert(ent && ent->kind == k_entity); if (!is_Method_type(ent->type) || ent == unknown_entity) { return NULL; } - irg = ent->attr.mtd_attr.irg; - if (irg != NULL && !get_visit_pseudo_irgs() && is_pseudo_ir_graph(irg)) - return NULL; - return irg; + return ent->attr.mtd_attr.irg; } static inline ir_visited_t _get_entity_visited(const ir_entity *ent) @@ -397,8 +390,6 @@ static inline void _set_entity_dbg_info(ir_entity *ent, dbg_info *db) ent->dbi = db; } -int is_entity_final(const ir_entity *entity); - #define is_entity(thing) _is_entity(thing) #define get_entity_name(ent) _get_entity_name(ent) #define get_entity_ident(ent) _get_entity_ident(ent)