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 {
STATEMENT_CASE_LABEL,
STATEMENT_WHILE,
STATEMENT_DO_WHILE,
- STATEMENT_FOR
+ STATEMENT_FOR,
+ STATEMENT_ASM
} statement_type_t;
struct statement_base_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;
while_statement_t whiles;
do_while_statement_t do_while;
for_statement_t fors;
+ asm_statement_t asms;
};
struct translation_unit_t {