X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=ir.h;h=c2c94a1771d0f2b54c40cb83e41fb0df55d0a08b;hp=9a953a6187fbd2a12245c88b59728812cd5f2ea9;hb=2a4ea74a975b0d5bcea1fcc96711115bb34373d8;hpb=6df3c625b0f8501b2ed2ecc61e29d104f28f84b8 diff --git a/ir.h b/ir.h index 9a953a6..c2c94a1 100644 --- a/ir.h +++ b/ir.h @@ -273,6 +273,9 @@ typedef struct ir_function_s size_t run_id; struct ir_builder_s *owner; + + /* vararg support: */ + size_t max_varargs; } ir_function; #define IR_FLAG_HAS_ARRAYS (1<<1) #define IR_FLAG_HAS_UNINITIALIZED (1<<2) @@ -328,6 +331,7 @@ typedef struct ir_builder_s qcint str_immediate; /* there should just be this one nil */ ir_value *nil; + ir_value *reserved_va_count; } ir_builder; ir_builder* ir_builder_new(const char *modulename); @@ -343,6 +347,8 @@ ir_value* ir_builder_create_global(ir_builder*, const char *name, int vtype); ir_value* ir_builder_get_field(ir_builder*, const char *fun); ir_value* ir_builder_create_field(ir_builder*, const char *name, int vtype); +ir_value* ir_builder_get_va_count(ir_builder*); + bool ir_builder_generate(ir_builder *self, const char *filename); void ir_builder_dump(ir_builder*, int (*oprintf)(const char*, ...));