From: Michael Beck Date: Wed, 20 Jul 2005 16:22:22 +0000 (+0000) Subject: adding assertion to prevent recursive compound types X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=98ca7e71bc79bb2a3b2ccb039df78000fc48e70a;p=libfirm adding assertion to prevent recursive compound types [r6255] --- diff --git a/ir/tr/type.c b/ir/tr/type.c index 3d9e445af..1c42a9170 100644 --- 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)); + assert(clss != get_entity_type(member) && "recursive type"); 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 != get_entity_type(member) && "recursive type"); 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)); + 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) {