From b094543ff14d2bb51b6f94afa001a5e00eed8442 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sat, 4 Apr 2009 09:24:49 +0000 Subject: [PATCH] - updated exchange_types() to use the new type flags - use the assoc_type for type_id types instead of casting the mode [r25787] --- ir/tr/type_t.h | 9 +++++---- ir/tr/typegmod.c | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ir/tr/type_t.h b/ir/tr/type_t.h index 8ed2dfb46..7c0b2fb49 100644 --- a/ir/tr/type_t.h +++ b/ir/tr/type_t.h @@ -140,10 +140,11 @@ typedef union { /** Additional type flags. */ enum type_flags { tf_none = 0, /**< No flags. */ - tf_frame_type = 1, /**< Set if this is a frame type. */ - tf_value_param_type = 2, /**< Set if this is a value param type. */ - tf_lowered_type = 4, /**< Set if this is a lowered type. */ - tf_layout_fixed = 8, /**< Set if the layout of a type is fixed */ + tf_lowered_type = 1, /**< Set if this is a lowered type. */ + tf_layout_fixed = 2, /**< Set if the layout of a type is fixed */ + + tf_frame_type = 4, /**< Set if this is a frame type. */ + tf_value_param_type = 8, /**< Set if this is a value param type. */ tf_global_type = 16, /**< Set only for the global type */ tf_tls_type = 32, /**< Set only for the tls type */ tf_constructors = 64, /**< Set only for the constructors segment type */ diff --git a/ir/tr/typegmod.c b/ir/tr/typegmod.c index b9e414385..642ef66e0 100644 --- a/ir/tr/typegmod.c +++ b/ir/tr/typegmod.c @@ -30,7 +30,7 @@ #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. @@ -51,7 +51,7 @@ void exchange_types(ir_type *old_type, ir_type *new_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; @@ -60,6 +60,6 @@ void exchange_types(ir_type *old_type, ir_type *new_type) { 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; } -- 2.20.1