X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Ftypegmod.c;h=b9e41438560c790b3589c6d98b0bb7e29ec8d3c7;hb=4b734653b3f11a3182963369bb58980e4d5a62cb;hp=6d2d8da67a89443b6ffc4eceecc14d3b076bda50;hpb=595f9b42cc7417a9a717fc15fbed2b4a969f95fe;p=libfirm diff --git a/ir/tr/typegmod.c b/ir/tr/typegmod.c index 6d2d8da67..b9e414385 100644 --- a/ir/tr/typegmod.c +++ b/ir/tr/typegmod.c @@ -1,54 +1,65 @@ /* - * Project: libFIRM - * File name: ir/tr/typegmod.c - * Purpose: Functionality to modify the type graph. - * Author: Goetz Lindenmaier - * Modified by: Michael Beck - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 2001-2006 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/** + * @file typegmod.c + * @brief Functionality to modify the type graph. + * @author Goetz Lindenmaier, Michael Beck + * @version $Id$ */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif -#include "typegmod.h" #include "type_t.h" #include "tpop_t.h" #include "irmode.h" void exchange_types(ir_type *old_type, ir_type *new_type) { - unsigned flags = old_type->flags & (tf_frame_type | tf_value_param_type | tf_global_type | tf_tls_type); - /* Deallocate datastructures not directly contained in the - old type. We must do this now as it is the latest point - where we know the original kind of type. - */ - free_type_attrs(old_type); + unsigned flags = old_type->flags & (tf_frame_type | tf_value_param_type | tf_global_type | tf_tls_type); + /* Deallocate datastructures not directly contained in the + old type. We must do this now as it is the latest point + where we know the original kind of type. + */ + free_type_attrs(old_type); - /* @@@@ - Things to deal with: - * After exchange_types the type has two entries in the list of - all types in irp. So far this is fine for the walker. - Maybe it's better to remove the id entry and shrink the list. - Does this conflict with the walker? Might a type be left out - during the walk? - * Deallocation: if the Id is removed from the list it will eventually - disappear in a memory leak. When is impossible to determine so we - need to hold it in a separate list for deallocation. - */ + /* @@@@ + Things to deal with: + * After exchange_types the type has two entries in the list of + all types in irp. So far this is fine for the walker. + Maybe it's better to remove the id entry and shrink the list. + Does this conflict with the walker? Might a type be left out + during the walk? + * Deallocation: if the Id is removed from the list it will eventually + disappear in a memory leak. When is impossible to determine so we + need to hold it in a separate list for deallocation. + */ - /* Exchange the types */ - old_type->type_op = type_id; - old_type->mode = (ir_mode *) new_type; - /* ensure that the frame, value param, global and tls flags - are set right if these types are exchanged */ - new_type->flags |= flags; + /* Exchange the types */ + old_type->type_op = type_id; + old_type->mode = (ir_mode *) new_type; + /* ensure that the frame, value param, global and tls flags + are set right if these types are exchanged */ + new_type->flags |= flags; } ir_type *skip_tid(ir_type *tp) { - /* @@@ implement the self cycle killing trick of skip_id(ir_node *) */ - while (tp->type_op == type_id) - tp = (ir_type *) tp->mode; - return tp; + /* @@@ implement the self cycle killing trick of skip_id(ir_node *) */ + while (tp->type_op == type_id) + tp = (ir_type *) tp->mode; + return tp; }