/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* @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);
+ unsigned flags = old_type->flags & ~(tf_lowered_type | tf_layout_fixed);
/* 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.
/* Exchange the types */
old_type->type_op = type_id;
- old_type->mode = (ir_mode *) new_type;
+ old_type->assoc_type = 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;
+ tp = tp->assoc_type;
return tp;
}