From 1810c6a7625f2b9e6f5281a6eb1721ab008e5125 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Fri, 3 Apr 2009 23:43:14 +0000 Subject: [PATCH] - add type flags for constructors/destructors [r25785] --- ir/ir/irprog.c | 5 +++-- ir/tr/type_t.h | 16 +++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ir/ir/irprog.c b/ir/ir/irprog.c index f9b414817..5f7fdf5bc 100644 --- a/ir/ir/irprog.c +++ b/ir/ir/irprog.c @@ -92,13 +92,14 @@ static ir_prog *complete_ir_prog(ir_prog *irp) { /* Set these flags for debugging. */ irp->segment_types[IR_SEGMENT_GLOBAL]->flags |= tf_global_type; irp->segment_types[IR_SEGMENT_THREAD_LOCAL]->flags |= tf_tls_type; + irp->segment_types[IR_SEGMENT_CONSTRUCTORS]->flags |= tf_constructors; + irp->segment_types[IR_SEGMENT_DESTRUCTORS]->flags |= tf_destructors; /* The global type is a class, but we cannot derive from it, so set the final property to assist optimizations that checks for it. */ set_class_final(irp->segment_types[IR_SEGMENT_GLOBAL], 1); - irp->const_code_irg = new_const_code_irg(); - + irp->const_code_irg = new_const_code_irg(); irp->phase_state = phase_building; irp->outs_state = outs_none; irp->ip_outedges = NULL; diff --git a/ir/tr/type_t.h b/ir/tr/type_t.h index b6e04d303..8ed2dfb46 100644 --- a/ir/tr/type_t.h +++ b/ir/tr/type_t.h @@ -139,13 +139,15 @@ 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_global_type = 16, /**< Set only for the global type */ - tf_tls_type = 32, /**< Set only for the tls type */ + 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_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 */ + tf_destructors = 128, /**< Set only for the destructors segment type */ }; /** -- 2.20.1