value parameter types have now a flag to distinguish from others
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 7 Jun 2006 15:18:04 +0000 (15:18 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 7 Jun 2006 15:18:04 +0000 (15:18 +0000)
entities of value parameter types havy allovation "parameter"

[r7883]

ir/tr/type.c
ir/tr/type.h
ir/tr/type_t.h

index 1eca6d4..0119736 100644 (file)
@@ -1153,6 +1153,7 @@ static INLINE ir_type *
 build_value_type(ident *name, int len, tp_ent_pair *tps) {
   int i;
   ir_type *res = new_type_struct(name);
+  res->flags |= tf_value_param_type;
   /* Remove type from type list.  Must be treated differently than other types. */
   remove_irp_type(res);
   for (i = 0; i < len; i++) {
@@ -1160,6 +1161,7 @@ build_value_type(ident *name, int len, tp_ent_pair *tps) {
     ir_type *elt_type = tps[i].tp ? tps[i].tp : res;
 
     tps[i].ent = new_entity(res, mangle_u(name, get_type_ident(elt_type)), elt_type);
+    set_entity_allocation(tps[i].ent, allocation_parameter);
   }
   return res;
 }
@@ -1926,12 +1928,17 @@ int is_compound_type(const ir_type *tp) {
   return tp->type_op->flags & TP_OP_FLAG_COMPOUND;
 }
 
-/* Checks, whether a type is a frame ir_type */
+/* Checks, whether a type is a frame type */
 int is_frame_type(const ir_type *tp) {
   return tp->flags & tf_frame_type;
 }
 
-/* Checks, whether a type is a lowered ir_type */
+/* Checks, whether a type is a value parameter type */
+int is_value_param_type(const ir_type *tp) {
+  return tp->flags & tf_value_param_type;
+}
+
+/* Checks, whether a type is a lowered type */
 int is_lowered_type(const ir_type *tp) {
   return tp->flags & tf_lowered_type;
 }
index d4da089..48a1d51 100644 (file)
@@ -1274,6 +1274,11 @@ int is_compound_type(const ir_type *tp);
  */
 int is_frame_type(const ir_type *tp);
 
+/**
+ * Checks, whether a type is a value parameter type.
+ */
+int is_value_param_type(const ir_type *tp);
+
 /**
  * Checks, whether a type is a lowered type.
  */
index 987ae1d..a8c9cb4 100644 (file)
@@ -126,10 +126,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_lowered_type    = 2,  /**< Set if this is a lowered type. */
-  tf_layout_fixed    = 4   /**< Set if the layout of a type is fixed */
+  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 */
 };
 
 /** the structure of a type */