X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=ir.h;h=d0950547ef8779dfbe50a4351d5d0eb7aef4662e;hb=5ca6f4abcafcaaf0f5804111f381a97a2b0e871c;hp=d3ad5b3715ca919ebd83dbc7be280cfe30f4bcbf;hpb=8ab51544be3756c57424af50302d8e2b058f65b1;p=xonotic%2Fgmqcc.git diff --git a/ir.h b/ir.h index d3ad5b3..d095054 100644 --- a/ir.h +++ b/ir.h @@ -38,6 +38,8 @@ typedef struct ir_value_s { int vtype; int store; lex_ctx context; + /* even the IR knows the subtype of a field */ + int fieldtype; MEM_VECTOR_MAKE(struct ir_instr_s*, reads); MEM_VECTOR_MAKE(struct ir_instr_s*, writes); @@ -50,8 +52,14 @@ typedef struct ir_value_s { vector vvec; char *vstring; struct ir_value_s *vpointer; + struct ir_function_s *vfunc; } constval; + struct { + int32_t globaladdr; + int32_t name; + } code; + /* For the temp allocator */ MEM_VECTOR_MAKE(ir_life_entry_t, life); } ir_value; @@ -266,4 +274,8 @@ ir_value* ir_builder_create_global(ir_builder*, const char *name, int vtype); void ir_builder_dump(ir_builder*, int (*oprintf)(const char*, ...)); +/* This code assumes 32 bit floats while generating binary */ +extern int check_int_and_float_size +[ (sizeof(int32_t) == sizeof(( (ir_value*)(NULL) )->constval.vvec.x)) ? 1 : -1 ]; + #endif