X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=ir.h;h=9f8e1fa4e9f0aec9657c88865aede0d3f42344e8;hp=e85eb45916961440c3015fdb015c018f5d65407f;hb=f58b4a6cd98d84589efc8b8ebb6bcbef2aa2b12b;hpb=710f580e1548bd7e69e39d63fd419ecae06a13d7 diff --git a/ir.h b/ir.h index e85eb45..9f8e1fa 100644 --- a/ir.h +++ b/ir.h @@ -22,7 +22,7 @@ */ #ifndef GMQCC_IR_HDR #define GMQCC_IR_HDR - +#include "gmqcc.h" /* ir_value */ typedef struct @@ -79,6 +79,7 @@ typedef struct ir_value_s { bool unique_life; /* temps living during a CALL must be locked */ bool locked; + bool callparam; /* For the temp allocator */ ir_life_entry_t *life; @@ -96,7 +97,7 @@ void ir_value_delete(ir_value*); bool ir_value_set_name(ir_value*, const char *name); ir_value* ir_value_vector_member(ir_value*, unsigned int member); -bool GMQCC_WARN vec_ir_value_find(ir_value **vec, ir_value *what, size_t *idx); +bool GMQCC_WARN vec_ir_value_find(ir_value **vec, const ir_value *what, size_t *idx); bool GMQCC_WARN ir_value_set_float(ir_value*, float f); bool GMQCC_WARN ir_value_set_func(ir_value*, int f); @@ -153,7 +154,7 @@ void ir_instr_delete(ir_instr*); bool GMQCC_WARN vec_ir_instr_find(ir_instr **vec, ir_instr *what, size_t *idx); -bool GMQCC_WARN ir_instr_op(ir_instr*, int op, ir_value *value, bool writing); +bool ir_instr_op(ir_instr*, int op, ir_value *value, bool writing); void ir_instr_dump(ir_instr* in, char *ind, int (*oprintf)(const char*,...)); @@ -251,6 +252,7 @@ typedef struct ir_function_s ir_value **locals; size_t allocated_locals; + size_t globaltemps; ir_block* first; ir_block* last; @@ -309,10 +311,13 @@ typedef struct ir_builder_s ht htfields; ir_value **extparams; + ir_value **extparam_protos; /* the highest func->allocated_locals */ size_t max_locals; + size_t max_globaltemps; uint32_t first_common_local; + uint32_t first_common_globaltemp; const char **filenames; qcint *filestrings;