preliminary Win32 support added
[cparser] / ast_t.h
diff --git a/ast_t.h b/ast_t.h
index 61bd6a4..321915e 100644 (file)
--- a/ast_t.h
+++ b/ast_t.h
@@ -12,7 +12,8 @@
 extern struct obstack ast_obstack;
 
 typedef enum {
-       EXPR_INVALID = 0,
+       EXPR_UNKNOWN = 0,
+       EXPR_INVALID,
        EXPR_REFERENCE,
        EXPR_CONST,
        EXPR_STRING_LITERAL,
@@ -203,7 +204,8 @@ typedef enum {
        NAMESPACE_NORMAL,
        NAMESPACE_STRUCT,
        NAMESPACE_UNION,
-       NAMESPACE_ENUM
+       NAMESPACE_ENUM,
+       NAMESPACE_LABEL
 } namespace_t;
 
 typedef enum {
@@ -224,6 +226,8 @@ struct initializer_t {
 struct declaration_t {
        unsigned char       namespace;
        unsigned char       storage_class;
+       unsigned int        address_taken : 1;
+       unsigned int        is_inline     : 1;
        type_t             *type;
        symbol_t           *symbol;
        source_position_t   source_position;
@@ -244,6 +248,7 @@ struct declaration_t {
        union {
                unsigned int    value_number;     /* used in ast2firm module */
                ir_entity      *entity;           /* used in ast2firm module */
+               ir_node        *block;            /* used in ast2firm module */
        } v;
 };
 
@@ -286,9 +291,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 {
@@ -305,9 +307,8 @@ struct switch_statement_t {
 };
 
 struct goto_statement_t {
-       statement_t        statement;
-       symbol_t          *label_symbol;
-       label_statement_t *label;
+       statement_t    statement;
+       declaration_t *label;
 };
 
 struct case_label_statement_t {
@@ -316,8 +317,9 @@ struct case_label_statement_t {
 };
 
 struct label_statement_t {
-       statement_t        statement;
-       symbol_t          *symbol;
+       statement_t    statement;
+       declaration_t *label;
+       statement_t   *label_statement;
 };
 
 struct expression_statement_t {