X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=3314400b6bf18fa2a3c21c91b5b2135dad69ca75;hb=83bd59cf68577d31ae6c9abbfb7e4f6287f5f360;hp=e6f7f4d1038d4aae395af4f041c2d5d804c38f1d;hpb=61bb8cbf62e7ca43ca99859159cc159bdb6c405c;p=cparser diff --git a/ast_t.h b/ast_t.h index e6f7f4d..3314400 100644 --- a/ast_t.h +++ b/ast_t.h @@ -225,7 +225,10 @@ typedef enum { STORAGE_CLASS_STATIC, STORAGE_CLASS_AUTO, STORAGE_CLASS_REGISTER, - STORAGE_CLASS_ENUM_ENTRY + STORAGE_CLASS_ENUM_ENTRY, + STORAGE_CLASS_THREAD, + STORAGE_CLASS_THREAD_EXTERN, + STORAGE_CLASS_THREAD_STATIC } storage_class_tag_t; typedef enum { @@ -317,7 +320,8 @@ typedef enum { STATEMENT_CASE_LABEL, STATEMENT_WHILE, STATEMENT_DO_WHILE, - STATEMENT_FOR + STATEMENT_FOR, + STATEMENT_ASM } statement_type_t; struct statement_base_t { @@ -399,6 +403,27 @@ struct for_statement_t { context_t context; }; +struct asm_constraint_t { + const char *constraints; + expression_t *expression; + symbol_t *symbol; + asm_constraint_t *next; +}; + +struct asm_clobber_t { + const char *clobber; + asm_clobber_t *next; +}; + +struct asm_statement_t { + statement_base_t statement; + const char *asm_text; + asm_constraint_t *inputs; + asm_constraint_t *outputs; + asm_clobber_t *clobbers; + bool is_volatile; +}; + union statement_t { statement_type_t type; statement_base_t base; @@ -414,6 +439,7 @@ union statement_t { while_statement_t whiles; do_while_statement_t do_while; for_statement_t fors; + asm_statement_t asms; }; struct translation_unit_t {