- add type flags for constructors/destructors
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 3 Apr 2009 23:43:14 +0000 (23:43 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 3 Apr 2009 23:43:14 +0000 (23:43 +0000)
[r25785]

ir/ir/irprog.c
ir/tr/type_t.h

index f9b4148..5f7fdf5 100644 (file)
@@ -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;
index b6e04d3..8ed2dfb 100644 (file)
@@ -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 */
 };
 
 /**