*/
type_t *make_atomic_type(atomic_type_kind_t akind, type_qualifiers_t qualifiers)
{
- type_t *type = obstack_alloc(type_obst, sizeof(atomic_type_t));
- memset(type, 0, sizeof(atomic_type_t));
-
- type->kind = TYPE_ATOMIC;
+ type_t *const type = allocate_type_zero(TYPE_ATOMIC);
type->base.qualifiers = qualifiers;
type->atomic.akind = akind;
*/
type_t *make_complex_type(atomic_type_kind_t akind, type_qualifiers_t qualifiers)
{
- type_t *type = obstack_alloc(type_obst, sizeof(complex_type_t));
- memset(type, 0, sizeof(complex_type_t));
-
- type->kind = TYPE_COMPLEX;
+ type_t *const type = allocate_type_zero(TYPE_COMPLEX);
type->base.qualifiers = qualifiers;
type->complex.akind = akind;
*/
type_t *make_imaginary_type(atomic_type_kind_t akind, type_qualifiers_t qualifiers)
{
- type_t *type = obstack_alloc(type_obst, sizeof(imaginary_type_t));
- memset(type, 0, sizeof(imaginary_type_t));
-
- type->kind = TYPE_IMAGINARY;
+ type_t *const type = allocate_type_zero(TYPE_IMAGINARY);
type->base.qualifiers = qualifiers;
type->imaginary.akind = akind;
*/
type_t *make_pointer_type(type_t *points_to, type_qualifiers_t qualifiers)
{
- type_t *type = obstack_alloc(type_obst, sizeof(pointer_type_t));
- memset(type, 0, sizeof(pointer_type_t));
-
- type->kind = TYPE_POINTER;
+ type_t *const type = allocate_type_zero(TYPE_POINTER);
type->base.qualifiers = qualifiers;
type->pointer.points_to = points_to;
type->pointer.base_variable = NULL;
*/
type_t *make_reference_type(type_t *refers_to)
{
- type_t *type = obstack_alloc(type_obst, sizeof(reference_type_t));
- memset(type, 0, sizeof(reference_type_t));
-
- type->kind = TYPE_REFERENCE;
- type->base.qualifiers = 0;
+ type_t *const type = allocate_type_zero(TYPE_REFERENCE);
+ type->base.qualifiers = TYPE_QUALIFIER_NONE;
type->reference.refers_to = refers_to;
return identify_new_type(type);
type_t *make_based_pointer_type(type_t *points_to,
type_qualifiers_t qualifiers, variable_t *variable)
{
- type_t *type = obstack_alloc(type_obst, sizeof(pointer_type_t));
- memset(type, 0, sizeof(pointer_type_t));
-
- type->kind = TYPE_POINTER;
+ type_t *const type = allocate_type_zero(TYPE_POINTER);
type->base.qualifiers = qualifiers;
type->pointer.points_to = points_to;
type->pointer.base_variable = variable;
type_t *make_array_type(type_t *element_type, size_t size,
type_qualifiers_t qualifiers)
{
- type_t *type = obstack_alloc(type_obst, sizeof(array_type_t));
- memset(type, 0, sizeof(array_type_t));
-
- type->kind = TYPE_ARRAY;
+ type_t *const type = allocate_type_zero(TYPE_ARRAY);
type->base.qualifiers = qualifiers;
type->array.element_type = element_type;
type->array.size = size;