projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a227f30
)
adding assertion to prevent recursive compound types
author
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Wed, 20 Jul 2005 16:22:22 +0000
(16:22 +0000)
committer
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Wed, 20 Jul 2005 16:22:22 +0000
(16:22 +0000)
[r6255]
ir/tr/type.c
patch
|
blob
|
history
diff --git
a/ir/tr/type.c
b/ir/tr/type.c
index
3d9e445
..
1c42a91
100644
(file)
--- a/
ir/tr/type.c
+++ b/
ir/tr/type.c
@@
-803,6
+803,7
@@
void free_class_attrs(type *clss) {
/* manipulate private fields of class type */
void add_class_member (type *clss, entity *member) {
assert(clss && (clss->type_op == type_class));
/* manipulate private fields of class type */
void add_class_member (type *clss, entity *member) {
assert(clss && (clss->type_op == type_class));
+ assert(clss != get_entity_type(member) && "recursive type");
ARR_APP1 (entity *, clss->attr.ca.members, member);
}
ARR_APP1 (entity *, clss->attr.ca.members, member);
}
@@
-1025,6
+1026,7
@@
void add_struct_member (type *strct, entity *member) {
assert(strct && (strct->type_op == type_struct));
assert(get_type_tpop(get_entity_type(member)) != type_method);
/* @@@ lowerfirm geht nicht durch */
assert(strct && (strct->type_op == type_struct));
assert(get_type_tpop(get_entity_type(member)) != type_method);
/* @@@ lowerfirm geht nicht durch */
+ assert(strct != get_entity_type(member) && "recursive type");
ARR_APP1 (entity *, strct->attr.sa.members, member);
}
ARR_APP1 (entity *, strct->attr.sa.members, member);
}
@@
-1365,6
+1367,7
@@
int get_union_n_members (const type *uni) {
}
void add_union_member (type *uni, entity *member) {
assert(uni && (uni->type_op == type_union));
}
void add_union_member (type *uni, entity *member) {
assert(uni && (uni->type_op == type_union));
+ assert(uni != get_entity_type(member) && "recursive type");
ARR_APP1 (entity *, uni->attr.ua.members, member);
}
entity *get_union_member (const type *uni, int pos) {
ARR_APP1 (entity *, uni->attr.ua.members, member);
}
entity *get_union_member (const type *uni, int pos) {