-typedef enum {
- DM_DLLIMPORT = (1 << 0),
- DM_DLLEXPORT = (1 << 1),
- DM_THREAD = (1 << 2),
- DM_NAKED = (1 << 3),
- DM_MICROSOFT_INLINE = (1 << 4),
- DM_FORCEINLINE = (1 << 5),
- DM_SELECTANY = (1 << 6),
- DM_NOTHROW = (1 << 7),
- DM_NOVTABLE = (1 << 8),
- DM_NORETURN = (1 << 9),
- DM_NOINLINE = (1 << 10),
- DM_RESTRICT = (1 << 11),
- DM_NOALIAS = (1 << 12)
-} decl_modifier_t;
-
-typedef unsigned short decl_modifiers_t;
-
-struct declaration_t {
- unsigned char namespc;
- unsigned char declared_storage_class;
- unsigned char storage_class;
- unsigned char alignment; /**< Alignment of the declaration, 0 for default. */
- decl_modifiers_t modifiers; /**< MS __declspec modifiers. */
- const char *deprecated_string; /**< MS deprecated string if any. */
- symbol_t *get_property_sym; /**< MS get property. */
- symbol_t *put_property_sym; /**< MS put property. */
- unsigned int address_taken : 1;
- unsigned int is_inline : 1;
- unsigned int used : 1; /**< Set if the declaration is used. */
- unsigned int deprecated : 1; /**< Microsoft of GNU deprecated attribute. */
- type_t *type;
- symbol_t *symbol;
- source_position_t source_position;
- union {
- bool is_defined;
- statement_t *statement;
- initializer_t *initializer;
- expression_t *enum_value;
- } init;
- scope_t scope; /**< The scope that this declaration opens. */
- scope_t *parent_scope; /**< The parant scope where this declaration lives. */
-
- /** next declaration in a scope */
- declaration_t *next;
- /** next declaration with same symbol */
- declaration_t *symbol_next;
-
- /* the following fields are used in ast2firm module */
- unsigned char declaration_kind;
- union {
- unsigned int value_number;
- ir_entity *entity;
- ir_node *block;
- ir_node *vla_base;
- tarval *enum_val;
- ir_type *irtype;
- } v;
-};
-
-typedef enum {
+typedef enum gnu_attribute_kind_t {
+ GNU_AK_CONST,
+ GNU_AK_VOLATILE,
+ GNU_AK_CDECL,
+ GNU_AK_STDCALL,
+ GNU_AK_FASTCALL,
+ GNU_AK_DEPRECATED,
+ GNU_AK_NOINLINE,
+ GNU_AK_NORETURN,
+ GNU_AK_NAKED,
+ GNU_AK_PURE,
+ GNU_AK_ALWAYS_INLINE,
+ GNU_AK_MALLOC,
+ GNU_AK_WEAK,
+ GNU_AK_CONSTRUCTOR,
+ GNU_AK_DESTRUCTOR,
+ GNU_AK_NOTHROW,
+ GNU_AK_TRANSPARENT_UNION,
+ GNU_AK_COMMON,
+ GNU_AK_NOCOMMON,
+ GNU_AK_PACKED,
+ GNU_AK_SHARED,
+ GNU_AK_NOTSHARED,
+ GNU_AK_USED,
+ GNU_AK_UNUSED,
+ GNU_AK_NO_INSTRUMENT_FUNCTION,
+ GNU_AK_WARN_UNUSED_RESULT,
+ GNU_AK_LONGCALL,
+ GNU_AK_SHORTCALL,
+ GNU_AK_LONG_CALL,
+ GNU_AK_SHORT_CALL,
+ GNU_AK_FUNCTION_VECTOR,
+ GNU_AK_INTERRUPT,
+ GNU_AK_INTERRUPT_HANDLER,
+ GNU_AK_NMI_HANDLER,
+ GNU_AK_NESTING,
+ GNU_AK_NEAR,
+ GNU_AK_FAR,
+ GNU_AK_SIGNAL,
+ GNU_AK_EIGTHBIT_DATA,
+ GNU_AK_TINY_DATA,
+ GNU_AK_SAVEALL,
+ GNU_AK_FLATTEN,
+ GNU_AK_SSEREGPARM,
+ GNU_AK_EXTERNALLY_VISIBLE,
+ GNU_AK_RETURN_TWICE,
+ GNU_AK_MAY_ALIAS,
+ GNU_AK_MS_STRUCT,
+ GNU_AK_GCC_STRUCT,
+ GNU_AK_DLLIMPORT,
+ GNU_AK_DLLEXPORT,
+ GNU_AK_ALIGNED,
+ GNU_AK_ALIAS,
+ GNU_AK_SECTION,
+ GNU_AK_FORMAT,
+ GNU_AK_FORMAT_ARG,
+ GNU_AK_WEAKREF,
+ GNU_AK_NONNULL,
+ GNU_AK_TLS_MODEL,
+ GNU_AK_VISIBILITY,
+ GNU_AK_REGPARM,
+ GNU_AK_MODEL,
+ GNU_AK_MODE,
+ GNU_AK_TRAP_EXIT,
+ GNU_AK_SP_SWITCH,
+ GNU_AK_SENTINEL,
+ GNU_AK_LAST
+} gnu_attribute_kind_t;
+
+typedef enum statement_kind_t {