X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=cb8d4e97636e790ec070e70221ee28483acc6bdb;hb=4f2e72b82ad87a0cd9e9d808f77557da7e0ce55f;hp=af807be5fd5f70c8cc8485e70b0278ff0ca757ed;hpb=b3b5cda5150d090e2286748b06d4fef3f29a5371;p=cparser diff --git a/ast_t.h b/ast_t.h index af807be..cb8d4e9 100644 --- a/ast_t.h +++ b/ast_t.h @@ -1,6 +1,6 @@ /* * This file is part of cparser. - * Copyright (C) 2007-2008 Matthias Braun + * Copyright (C) 2007-2009 Matthias Braun * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -233,9 +233,9 @@ struct expression_base_t { expression_kind_t kind; /**< The expression kind. */ type_t *type; /**< The type of the expression. */ source_position_t source_position; /**< The source position of this expression. */ - bool parenthesized; + bool parenthesized : 1; #ifndef NDEBUG - bool transformed; /**< Set if this expression was transformed. */ + bool transformed : 1; /**< Set if this expression was transformed. */ #endif }; @@ -323,6 +323,8 @@ struct select_expression_t { expression_base_t base; expression_t *compound; entity_t *compound_entry; + bool implicit : 1; /**< compiler generated select + (for anonymous struct/union) */ }; struct array_access_expression_t { @@ -465,79 +467,6 @@ union initializer_t { initializer_designator_t designator; }; -/** - * GNU attributes. - */ -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_RETURNS_TWICE, - 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; - /** * The statement kinds. */ @@ -730,25 +659,21 @@ struct translation_unit_t { statement_t *global_asm; }; -static inline -void *_allocate_ast(size_t size) +static inline void *_allocate_ast(size_t size) { return obstack_alloc(&ast_obstack, size); } -static inline -bool is_invalid_expression(expression_t *expression) +static inline bool is_invalid_expression(expression_t *expression) { return expression->base.kind == EXPR_INVALID; } -static inline -bool is_invalid_statement(statement_t *statement) +static inline bool is_invalid_statement(statement_t *statement) { return statement->base.kind == STATEMENT_INVALID; } - #define allocate_ast(size) _allocate_ast(size) #endif