X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Fmangle.c;h=5adb6661acc3f9830da687dd77ddf28d9f8ae3f6;hb=1312195fd166a8ace88a3ea9671dbb7dfc11b39e;hp=ed95a9f1f134dcccb3c8b796e61c6d8953e9df41;hpb=a7a54b4eb512dcc5e0be95fcb5ca95e4e2e893a9;p=libfirm diff --git a/ir/tr/mangle.c b/ir/tr/mangle.c index ed95a9f1f..5adb6661a 100644 --- a/ir/tr/mangle.c +++ b/ir/tr/mangle.c @@ -1,22 +1,23 @@ -/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe -* All rights reserved. -* -* Authors: Martin Trapp, Christian Schaefer -* -*/ +/* + * Project: libFIRM + * File name: ir/tr/mangle.c + * Purpose: Methods to manipulate names. + * Author: Martin Trapp, Christian Schaefer + * Modified by: Goetz Lindenmaier + * Created: + * CVS-ID: $Id$ + * Copyright: (c) 1998-2003 Universität Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ + -/* $Id$ */ #ifdef HAVE_CONFIG_H # include #endif -# include "xprintf.h" # include "mangle.h" -# include # include "obst.h" -# include -# include "misc.h" /* Make types visible to allow most efficient access */ # include "entity_t.h" @@ -25,6 +26,13 @@ static struct obstack mangle_obst; +static INLINE ident * +mangle_type (type *tp) +{ + assert (tp->kind == k_type); + return tp->name; +} + ident * mangle_entity (entity *ent) { @@ -34,31 +42,16 @@ mangle_entity (entity *ent) ident *res; type_id = mangle_type ((type *) ent->owner); - xoprintf (&mangle_obst, "%s_%s", id_to_str(type_id), id_to_str(ent->name)); + obstack_grow(&mangle_obst, get_id_str(type_id), get_id_strlen(type_id)); + obstack_1grow(&mangle_obst,'_'); + obstack_grow(&mangle_obst,get_id_str(ent->name),get_id_strlen(ent->name)); len = obstack_object_size (&mangle_obst); cp = obstack_finish (&mangle_obst); - res = id_from_str (cp, len); + res = id_from_str(cp, len); obstack_free (&mangle_obst, cp); return res; } -ident * -mangle_type (type *tp) -{ - char *cp; - int len; - ident *res; - - assert (tp->kind == k_type); - /* assert (tp->type_op->code == tpo_class); */ - - xoprintf (&mangle_obst, "%s", id_to_str(tp->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) { @@ -66,7 +59,8 @@ ident *mangle (ident *first, ident* scnd) { int len; ident *res; - xoprintf (&mangle_obst, "%s%s", id_to_str(first), id_to_str(scnd)); + obstack_grow(&mangle_obst, get_id_str(first), get_id_strlen(first)); + obstack_grow(&mangle_obst, get_id_str(scnd), get_id_strlen(scnd)); len = obstack_object_size (&mangle_obst); cp = obstack_finish (&mangle_obst); res = id_from_str (cp, len); @@ -80,7 +74,9 @@ ident *mangle_u (ident *first, ident* scnd) { int len; ident *res; - xoprintf (&mangle_obst, "%s_%s", id_to_str(first), id_to_str(scnd)); + obstack_grow(&mangle_obst, get_id_str(first), get_id_strlen(first)); + obstack_1grow(&mangle_obst,'_'); + obstack_grow(&mangle_obst,get_id_str(scnd),get_id_strlen(scnd)); len = obstack_object_size (&mangle_obst); cp = obstack_finish (&mangle_obst); res = id_from_str (cp, len); @@ -92,5 +88,5 @@ ident *mangle_u (ident *first, ident* scnd) { void init_mangle (void) { - obstack_init (&mangle_obst); + obstack_init(&mangle_obst); }