projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rework Block labels: They are entities now so we don't need a special symconst type...
[libfirm]
/
include
/
libfirm
/
typerep.h
diff --git
a/include/libfirm/typerep.h
b/include/libfirm/typerep.h
index
5e552a4
..
2984591
100644
(file)
--- a/
include/libfirm/typerep.h
+++ b/
include/libfirm/typerep.h
@@
-360,6
+360,11
@@
int is_entity_final(const ir_entity *ent);
/** Sets/resets the final flag of an entity. */
void set_entity_final(ir_entity *ent, int final);
/** Sets/resets the final flag of an entity. */
void set_entity_final(ir_entity *ent, int final);
+/** Set label number of an entity with code type */
+void set_entity_label(ir_entity *ent, ir_label_t label);
+/** Return label number of an entity with code type */
+ir_label_t get_entity_label(const ir_entity *ent);
+
/** Checks if an entity is compiler generated. */
int is_entity_compiler_generated(const ir_entity *ent);
/** Checks if an entity is compiler generated. */
int is_entity_compiler_generated(const ir_entity *ent);
@@
-767,6
+772,7
@@
typedef enum {
tpo_pointer, /**< A pointer type. */
tpo_primitive, /**< A primitive type. */
tpo_id, /**< Special Id tag used for type replacement. */
tpo_pointer, /**< A pointer type. */
tpo_primitive, /**< A primitive type. */
tpo_id, /**< Special Id tag used for type replacement. */
+ tpo_code, /**< a piece of code (a basic block) */
tpo_none, /**< Special type for the None type. */
tpo_unknown, /**< Special code for the Unknown type. */
tpo_max /* not a type opcode */
tpo_none, /**< Special type for the None type. */
tpo_unknown, /**< Special code for the Unknown type. */
tpo_max /* not a type opcode */
@@
-816,8
+822,8
@@
ident *get_tpop_ident(const tp_op *op);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_class;
-tp_op *get_tpop_class(void);
+extern
const
tp_op *type_class;
+
const
tp_op *get_tpop_class(void);
/**
* This type opcode marks that the corresponding type is a compound type
/**
* This type opcode marks that the corresponding type is a compound type
@@
-828,8
+834,8
@@
tp_op *get_tpop_class(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_struct;
-tp_op *get_tpop_struct(void);
+extern
const
tp_op *type_struct;
+
const
tp_op *get_tpop_struct(void);
/**
* This type opcode marks that the corresponding type is a method type.
/**
* This type opcode marks that the corresponding type is a method type.
@@
-838,8
+844,8
@@
tp_op *get_tpop_struct(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_method;
-tp_op *get_tpop_method(void);
+extern
const
tp_op *type_method;
+
const
tp_op *get_tpop_method(void);
/**
* This type opcode marks that the corresponding type is a union type.
/**
* This type opcode marks that the corresponding type is a union type.
@@
-848,8
+854,8
@@
tp_op *get_tpop_method(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_union;
-tp_op *get_tpop_union(void);
+extern
const
tp_op *type_union;
+
const
tp_op *get_tpop_union(void);
/**
* This type opcode marks that the corresponding type is an array type.
/**
* This type opcode marks that the corresponding type is an array type.
@@
-859,8
+865,8
@@
tp_op *get_tpop_union(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_array;
-tp_op *get_tpop_array(void);
+extern
const
tp_op *type_array;
+
const
tp_op *get_tpop_array(void);
/**
* This type opcode marks that the corresponding type is an enumeration type.
/**
* This type opcode marks that the corresponding type is an enumeration type.
@@
-871,8
+877,8
@@
tp_op *get_tpop_array(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_enumeration;
-tp_op *get_tpop_enumeration(void);
+extern
const
tp_op *type_enumeration;
+
const
tp_op *get_tpop_enumeration(void);
/**
* This type opcode marks that the corresponding type is a pointer type.
/**
* This type opcode marks that the corresponding type is a pointer type.
@@
-881,8
+887,8
@@
tp_op *get_tpop_enumeration(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_pointer;
-tp_op *get_tpop_pointer(void);
+extern
const
tp_op *type_pointer;
+
const
tp_op *get_tpop_pointer(void);
/**
* This type opcode marks that the corresponding type is a primitive type.
/**
* This type opcode marks that the corresponding type is a primitive type.
@@
-892,8
+898,8
@@
tp_op *get_tpop_pointer(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_primitive;
-tp_op *get_tpop_primitive(void);
+extern
const
tp_op *type_primitive;
+
const
tp_op *get_tpop_primitive(void);
/**
* This type opcode is an auxiliary opcode dedicated to support transformations
/**
* This type opcode is an auxiliary opcode dedicated to support transformations
@@
-912,8
+918,14
@@
tp_op *get_tpop_primitive(void);
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
* This struct is dynamically allocated but constant for the lifetime
* of the library.
*/
-extern tp_op *type_id;
-tp_op *get_tpop_id(void);
+extern const tp_op *type_id;
+const tp_op *get_tpop_id(void);
+
+/**
+ * The code type is used to mark pieces of code (basic blocks)
+ */
+extern const tp_op *tpop_code;
+const tp_op *get_tpop_code_type(void);
/**
* This type opcode is an auxiliary opcode dedicated to support type analyses.
/**
* This type opcode is an auxiliary opcode dedicated to support type analyses.
@@
-923,8
+935,8
@@
tp_op *get_tpop_id(void);
* contain a type or that are initialized for an analysis. There exists exactly
* one type with this opcode.
*/
* contain a type or that are initialized for an analysis. There exists exactly
* one type with this opcode.
*/
-extern tp_op *tpop_none;
-tp_op *get_tpop_none(void);
+extern
const
tp_op *tpop_none;
+
const
tp_op *get_tpop_none(void);
/**
* This type opcode is an auxiliary opcode dedicated to support type analyses.
/**
* This type opcode is an auxiliary opcode dedicated to support type analyses.
@@
-934,8
+946,8
@@
tp_op *get_tpop_none(void);
* yet) or to represent the top of a lattice (could not be determined). There exists
* exactly one type with this opcode.
*/
* yet) or to represent the top of a lattice (could not be determined). There exists
* exactly one type with this opcode.
*/
-extern tp_op *tpop_unknown;
-tp_op *get_tpop_unknown(void);
+extern
const
tp_op *tpop_unknown;
+
const
tp_op *get_tpop_unknown(void);
/* ----------------------------------------------------------------------- */
/* Classify pairs of types/entities in the inheritance relations. */
/* ----------------------------------------------------------------------- */
/* Classify pairs of types/entities in the inheritance relations. */
@@
-993,7
+1005,7
@@
ir_entity *resolve_ent_polymorphy(ir_type *dynamic_class, ir_entity* static_ent)
*
* Returns an ident that consists of the name of type followed by an
* underscore and the name (not ld_name) of the entity. */
*
* Returns an ident that consists of the name of type followed by an
* underscore and the name (not ld_name) of the entity. */
-ident *default_mangle_inherited_name(
ir_entity *ent,
ir_type *clss);
+ident *default_mangle_inherited_name(
const ir_entity *ent, const
ir_type *clss);
/** Type of argument functions for inheritance resolver.
*
/** Type of argument functions for inheritance resolver.
*
@@
-1002,7
+1014,7
@@
ident *default_mangle_inherited_name(ir_entity *ent, ir_type *clss);
* used.
* @param clss The class type in which the new entity will be placed.
*/
* used.
* @param clss The class type in which the new entity will be placed.
*/
-typedef ident *mangle_inherited_name_func(
ir_entity *ent,
ir_type *clss);
+typedef ident *mangle_inherited_name_func(
const ir_entity *ent, const
ir_type *clss);
/** Resolve implicit inheritance.
*
/** Resolve implicit inheritance.
*
@@
-2295,8
+2307,13
@@
void set_primitive_base_type(ir_type *tp, ir_type *base_tp);
/** A variable that contains the only none type. */
extern ir_type *firm_none_type;
/** A variable that contains the only none type. */
extern ir_type *firm_none_type;
+/** A variable that contains the only code type. */
+extern ir_type *firm_code_type;
+
/** Returns the none type. */
ir_type *get_none_type(void);
/** Returns the none type. */
ir_type *get_none_type(void);
+/** Returns the code type. */
+ir_type *get_code_type(void);
/**
* @page unknown_type The Unknown type
/**
* @page unknown_type The Unknown type
@@
-2368,6
+2385,11
@@
int get_compound_member_index(const ir_type *tp, ir_entity *member);
*/
int is_compound_type(const ir_type *tp);
*/
int is_compound_type(const ir_type *tp);
+/**
+ * Checks wether a type is a code type.
+ */
+int is_code_type(const ir_type *tp);
+
/**
* Checks, whether a type is a frame type.
*/
/**
* Checks, whether a type is a frame type.
*/