do correct semantic check/adjustment for initializers, makes the last fix unnecessary
[cparser] / ast_t.h
diff --git a/ast_t.h b/ast_t.h
index 3a090c4..6b922bc 100644 (file)
--- a/ast_t.h
+++ b/ast_t.h
@@ -222,8 +222,9 @@ struct initializer_t {
 };
 
 struct declaration_t {
-       unsigned short      namespace;
-       unsigned short      storage_class;
+       unsigned char       namespace;
+       unsigned char       storage_class;
+       unsigned int        address_taken : 1;
        type_t             *type;
        symbol_t           *symbol;
        source_position_t   source_position;
@@ -236,11 +237,15 @@ struct declaration_t {
        context_t          *parent_context;
 
        /** next declaration in a context */
-       declaration_t      *context_next;
-       /** next declaration with same symbol */
        declaration_t      *next;
+       /** next declaration with same symbol */
+       declaration_t      *symbol_next;
 
-       ir_entity          *entity;
+       unsigned char       declaration_type; /* used in ast2firm module */
+       union {
+               unsigned int    value_number;     /* used in ast2firm module */
+               ir_entity      *entity;           /* used in ast2firm module */
+       } v;
 };
 
 typedef enum {
@@ -282,9 +287,6 @@ struct declaration_statement_t {
        statement_t    statement;
        declaration_t *declarations_begin;
        declaration_t *declarations_end;
-
-       int            value_number; /**< filled in by semantic phase */
-       int            refs;
 };
 
 struct if_statement_t {