X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=ast.h;h=95b8962ddab15724979ba111db0e94368117b329;hb=8f858a8f3eafcc113055987717d89c5d07994d0f;hp=004243fd7717fdf4ceea6343b7fe4ba06ae88200;hpb=2a3e7c1cff95a06b85ca2860735433cc59da64f5;p=xonotic%2Fgmqcc.git diff --git a/ast.h b/ast.h index 004243f..95b8962 100644 --- a/ast.h +++ b/ast.h @@ -131,7 +131,7 @@ typedef struct /* arrays get a member-count */ size_t count; ast_value* *params; - bool variadic; + uint32_t flags; /* The codegen functions should store their output values * so we can call it multiple times without re-evaluating. * Store lvalue and rvalue seperately though. So that @@ -140,6 +140,8 @@ typedef struct ir_value *outl; ir_value *outr; } ast_expression_common; +#define AST_FLAG_VARIADIC (1<<0) +#define AST_FLAG_NORETURN (1<<1) /* Value * @@ -573,7 +575,7 @@ bool ast_block_set_type(ast_block*, ast_expression *from); bool ast_block_codegen(ast_block*, ast_function*, bool lvalue, ir_value**); void ast_block_collect(ast_block*, ast_expression*); -void ast_block_add_expr(ast_block*, ast_expression*); +bool GMQCC_WARN ast_block_add_expr(ast_block*, ast_expression*); /* Function * @@ -626,6 +628,7 @@ void ast_function_delete(ast_function*); const char* ast_function_label(ast_function*, const char *prefix); bool ast_function_codegen(ast_function *self, ir_builder *builder); +bool ast_generate_accessors(ast_value *asvalue, ir_builder *ir); /* Expression union */