Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
80d8063d
Commit
80d8063d
authored
Dec 12, 2012
by
Christoph Mallon
Browse files
tr: Remove the unused type_info from class types.
Accordingly remove repr_class from entities.
parent
c416fbd2
Changes
6
Hide whitespace changes
Inline
Side-by-side
include/libfirm/typerep.h
View file @
80d8063d
...
...
@@ -657,10 +657,6 @@ FIRM_API void set_entity_additional_properties(ir_entity *ent,
FIRM_API
void
add_entity_additional_properties
(
ir_entity
*
ent
,
mtp_additional_properties
flag
);
/** Returns the class type that this type info entity represents or NULL
if ent is no type info entity. */
FIRM_API
ir_type
*
get_entity_repr_class
(
const
ir_entity
*
ent
);
/**
* @page unknown_entity The Unknown entity
*
...
...
@@ -1266,12 +1262,6 @@ FIRM_API int smaller_type(ir_type *st, ir_type *lt);
*
* - supertypes: A list of direct superclasses.
*
* - type_info: An entity representing the type information of this class.
* This entity can be of arbitrari type, Firm did not use it yet.
* It allows to express the coupling of a type with an entity
* representing this type. This information is useful for lowering
* of InstOf and TypeChk nodes. Default: NULL
*
* - vtable_size: The size of this class virtual function table.
* Default: 0
*
...
...
@@ -1378,12 +1368,6 @@ FIRM_API void set_class_supertype(ir_type *clss, ir_type *supertype, size_t pos)
/** Finds supertype in the list of supertypes and removes it */
FIRM_API
void
remove_class_supertype
(
ir_type
*
clss
,
ir_type
*
supertype
);
/** Returns the type info entity of a class. */
FIRM_API
ir_entity
*
get_class_type_info
(
const
ir_type
*
clss
);
/** Sets a type info entity for the class. */
FIRM_API
void
set_class_type_info
(
ir_type
*
clss
,
ir_entity
*
ent
);
/** Returns the size of the virtual function table. */
FIRM_API
unsigned
get_class_vtable_size
(
const
ir_type
*
clss
);
...
...
ir/ir/irio.c
View file @
80d8063d
...
...
@@ -606,8 +606,7 @@ static void write_type_compound(write_env_t *env, ir_type *tp)
size_t
i
;
if
(
is_Class_type
(
tp
))
{
if
(
get_class_n_subtypes
(
tp
)
>
0
||
get_class_n_supertypes
(
tp
)
>
0
||
get_class_type_info
(
tp
)
!=
NULL
||
get_class_vtable_size
(
tp
)
>
0
)
{
if
(
get_class_n_subtypes
(
tp
)
>
0
||
get_class_n_supertypes
(
tp
)
>
0
||
get_class_vtable_size
(
tp
)
>
0
)
{
/* sub/superclass export not implemented yet, it's unclear whether
* class types will stay in libfirm anyway */
panic
(
"can't export class types yet"
);
...
...
ir/tr/entity.c
View file @
80d8063d
...
...
@@ -78,7 +78,6 @@ static ir_entity *intern_new_entity(ir_type *owner, ir_entity_kind kind,
res
->
offset_bit_remainder
=
0
;
res
->
alignment
=
0
;
res
->
link
=
NULL
;
res
->
repr_class
=
NULL
;
#ifdef DEBUG_libfirm
res
->
nr
=
get_irp_new_node_nr
();
#endif
...
...
@@ -992,11 +991,6 @@ void add_entity_additional_properties(ir_entity *ent, mtp_additional_properties
ent
->
attr
.
mtd_attr
.
properties
|=
properties
;
}
ir_type
*
(
get_entity_repr_class
)(
const
ir_entity
*
ent
)
{
return
_get_entity_repr_class
(
ent
);
}
dbg_info
*
(
get_entity_dbg_info
)(
const
ir_entity
*
ent
)
{
return
_get_entity_dbg_info
(
ent
);
...
...
ir/tr/entity_t.h
View file @
80d8063d
...
...
@@ -66,7 +66,6 @@
#define mark_entity_visited(ent) _mark_entity_visited(ent)
#define entity_visited(ent) _entity_visited(ent)
#define entity_not_visited(ent) _entity_not_visited(ent)
#define get_entity_repr_class(ent) _get_entity_repr_class(ent)
#define get_entity_dbg_info(ent) _get_entity_dbg_info(ent)
#define set_entity_dbg_info(ent, db) _set_entity_dbg_info(ent, db)
...
...
@@ -182,8 +181,6 @@ struct ir_entity {
information. */
struct
dbg_info
*
dbi
;
/**< A pointer to information for debug support. */
void
*
link
;
/**< To store some intermediate information. */
ir_type
*
repr_class
;
/**< If this entity represents a class info, the
associated class. */
ir_entity
**
overwrites
;
/**< A list of entities this entity overwrites. */
ir_entity
**
overwrittenby
;
/**< A list of entities that overwrite this
...
...
@@ -430,12 +427,6 @@ static inline size_t _get_entity_parameter_number(const ir_entity *entity)
return
entity
->
attr
.
parameter
.
number
;
}
static
inline
ir_type
*
_get_entity_repr_class
(
const
ir_entity
*
ent
)
{
assert
(
ent
->
kind
==
k_entity
);
return
ent
->
repr_class
;
}
static
inline
dbg_info
*
_get_entity_dbg_info
(
const
ir_entity
*
ent
)
{
return
ent
->
dbi
;
...
...
ir/tr/type.c
View file @
80d8063d
...
...
@@ -713,7 +713,6 @@ ir_type *new_d_type_class(ident *name, type_dbg_info *db)
res
->
attr
.
ca
.
subtypes
=
NEW_ARR_F
(
ir_type
*
,
0
);
res
->
attr
.
ca
.
supertypes
=
NEW_ARR_F
(
ir_type
*
,
0
);
res
->
attr
.
ca
.
peculiarity
=
peculiarity_existent
;
res
->
attr
.
ca
.
type_info
=
NULL
;
res
->
attr
.
ca
.
vtable_size
=
0
;
res
->
attr
.
ca
.
clss_flags
=
cf_none
;
res
->
attr
.
ca
.
dfn
=
0
;
...
...
@@ -733,7 +732,6 @@ void free_class_entities(ir_type *clss)
/* we must iterate backward here */
for
(
i
=
get_class_n_members
(
clss
);
i
>
0
;)
free_entity
(
get_class_member
(
clss
,
--
i
));
/* do NOT free the type info here. It belongs to another class */
}
void
free_class_attrs
(
ir_type
*
clss
)
...
...
@@ -930,18 +928,6 @@ void remove_class_supertype(ir_type *clss, ir_type *supertype)
}
}
ir_entity
*
get_class_type_info
(
const
ir_type
*
clss
)
{
return
clss
->
attr
.
ca
.
type_info
;
}
void
set_class_type_info
(
ir_type
*
clss
,
ir_entity
*
ent
)
{
clss
->
attr
.
ca
.
type_info
=
ent
;
if
(
ent
)
ent
->
repr_class
=
clss
;
}
ir_peculiarity
get_class_peculiarity
(
const
ir_type
*
clss
)
{
assert
(
clss
&&
(
clss
->
type_op
==
type_class
));
...
...
ir/tr/type_t.h
View file @
80d8063d
...
...
@@ -94,7 +94,6 @@ typedef struct {
ir_type
**
subtypes
;
/**< Array containing the direct subtypes. */
ir_type
**
supertypes
;
/**< Array containing the direct supertypes */
ir_peculiarity
peculiarity
;
/**< The peculiarity of this class. */
ir_entity
*
type_info
;
/**< An ir_entity representing this class, used for type info. */
int
dfn
;
/**< A number that can be used for 'instanceof' operator. */
unsigned
vtable_size
;
/**< The size of the vtable for this class. */
unsigned
clss_flags
;
/**< Additional class flags. */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment