X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=ir.h;h=b1b0ea7b0b99837dbc8b5e4628db0e69d87c2076;hp=4a1778e9d11d0b9e011745546802560e1feb10a2;hb=973122ed9bc0679d4f9bb0fde90f90d57c17c3d7;hpb=40b2a26e896fd7a3f54c94ccb2abd9d517491822 diff --git a/ir.h b/ir.h index 4a1778e..b1b0ea7 100644 --- a/ir.h +++ b/ir.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 + * Copyright (C) 2012, 2013 * Wolfgang Bumiller * * Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -44,6 +44,7 @@ typedef struct ir_value_s { int outtype; /* 'const' vs 'var' qualifier */ int cvq; + uint32_t flags; struct ir_instr_s **reads; struct ir_instr_s **writes; @@ -171,6 +172,7 @@ typedef struct ir_block_s ir_value **living; /* For the temp-allocation */ + size_t entry_id; size_t eid; bool is_return; size_t run_id; @@ -275,6 +277,7 @@ typedef struct ir_function_s #define IR_FLAG_HAS_ARRAYS (1<<1) #define IR_FLAG_HAS_UNINITIALIZED (1<<2) #define IR_FLAG_HAS_GOTO (1<<3) +#define IR_FLAG_INCLUDE_DEF (1<<4) #define IR_FLAG_MASK_NO_OVERLAP (IR_FLAG_HAS_ARRAYS | IR_FLAG_HAS_UNINITIALIZED) ir_function* ir_function_new(struct ir_builder_s *owner, int returntype); @@ -325,6 +328,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); @@ -340,6 +344,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*, ...));