X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Fmangle.c;h=d1210db103f2ad2e9ef8a34658b5f2f4256b82c2;hb=e05c39b81949eb6454a8d9e2374ddd2d1cec076d;hp=03f91c152c1332302c74eefcf0a9e02cff716a31;hpb=c201fe69b5fcb5a8430afafe2e15946cab4e45c4;p=libfirm diff --git a/ir/tr/mangle.c b/ir/tr/mangle.c index 03f91c152..d1210db10 100644 --- a/ir/tr/mangle.c +++ b/ir/tr/mangle.c @@ -5,15 +5,23 @@ ** */ +/* $Id$ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +# include "xprintf.h" # include "mangle.h" # include # include "obst.h" -# include "entity.h" # include -# include "ident_t.h" +# include "misc.h" /* Make types visible to allow most efficient access */ # include "entity_t.h" +# include "type_t.h" +# include "tpop_t.h" static struct obstack mangle_obst; @@ -41,9 +49,38 @@ mangle_type (type *type) int len; ident *res; - assert (type->kind == k_type_class); + assert (type->kind == k_type); + /* assert (type->type_op->code == tpo_class); */ + + xoprintf (&mangle_obst, "%I", type->name); + len = obstack_object_size (&mangle_obst); + cp = obstack_finish (&mangle_obst); + res = id_from_str (cp, len); + obstack_free (&mangle_obst, cp); + return res; +} + +/* Returns a new ident that represents firstscnd. */ +ident *mangle (ident *first, ident* scnd) { + char *cp; + int len; + ident *res; + + xoprintf (&mangle_obst, "%I%I", first, scnd); + len = obstack_object_size (&mangle_obst); + cp = obstack_finish (&mangle_obst); + res = id_from_str (cp, len); + obstack_free (&mangle_obst, cp); + return res; +} + +/* Returns a new ident that represents first_scnd. */ +ident *mangle_u (ident *first, ident* scnd) { + char *cp; + int len; + ident *res; - xoprintf (&mangle_obst, "%I", type->clss.name); + xoprintf (&mangle_obst, "%I_%I", first, scnd); len = obstack_object_size (&mangle_obst); cp = obstack_finish (&mangle_obst); res = id_from_str (cp, len);