#include "ast_t.h"
#include "adt/obst.h"
-extern struct obstack *type_obst;
-
typedef enum type_kind_t {
TYPE_INVALID,
TYPE_ERROR,
TYPE_REFERENCE,
TYPE_ARRAY,
TYPE_BITFIELD,
- TYPE_BUILTIN,
TYPE_TYPEDEF,
TYPE_TYPEOF,
} type_kind_t;
atomic_type_kind_t akind;
};
-struct builtin_type_t {
- type_base_t base;
- symbol_t *symbol;
- type_t *real_type;
-};
-
struct pointer_type_t {
type_base_t base;
type_t *points_to;
atomic_type_t atomic;
complex_type_t complex;
imaginary_type_t imaginary;
- builtin_type_t builtin;
pointer_type_t pointer;
reference_type_t reference;
array_type_t array;
type_qualifiers_t qualifiers, variable_t *variable);
type_t *make_array_type(type_t *element_type, size_t size,
type_qualifiers_t qualifiers);
+function_parameter_t *allocate_parameter(type_t*);
type_t *duplicate_type(const type_t *type);
type_t *identify_new_type(type_t *type);
return type->kind == TYPE_COMPOUND_STRUCT;
}
-static inline bool is_type_builtin(const type_t *type)
-{
- assert(!is_typeref(type));
- return type->kind == TYPE_BUILTIN;
-}
-
static inline bool is_type_compound(const type_t *type)
{
assert(!is_typeref(type));