return _type_not_visited(tp);
}
+dbg_info *(get_type_dbg_info)(const ir_type *tp) {
+ return _get_type_dbg_info(tp);
+}
+
+void (set_type_dbg_info)(ir_type *tp, dbg_info *db) {
+ _set_type_dbg_info(tp, db);
+}
+
int (is_type)(const void *thing) {
return _is_type(thing);
}
ir_type *res = new_type(type_primitive, mode, name, db);
res->size = get_mode_size_bits(mode);
res->flags |= tf_layout_fixed;
+ res->attr.ba.base_type = NULL;
hook_new_type(res);
return res;
}
return new_d_type_primitive(name, mode, NULL);
}
-/* typecheck */
+/* type check */
int (is_Primitive_type)(const ir_type *primitive) {
return _is_primitive_type(primitive);
}
tp->mode = mode;
}
+/* Return the base type of a primitive (bitfield) type or NULL if none. */
+ir_type *get_primitive_base_type(ir_type *tp) {
+ assert(is_Primitive_type(tp));
+ return tp->attr.ba.base_type;
+}
+
+/* Sets the base type of a primitive (bitfield) type. */
+void set_primitive_base_type(ir_type *tp, ir_type *base_tp) {
+ assert(is_Primitive_type(tp));
+ tp->attr.ba.base_type = base_tp;
+}
/*-----------------------------------------------------------------*/
/* common functionality */