X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=ir.h;h=6532a5ea3a9c0cec236bd5f96f93ba1be6636ef8;hb=bf267d02385594be6175f94ae7d73275597b7f73;hp=6888e6c4172b85c2d111098d928ced47e4a4ce3c;hpb=6fc00e523d1c5678e40c9296b9e66fb6a6ee5bc7;p=xonotic%2Fgmqcc.git diff --git a/ir.h b/ir.h index 6888e6c..6532a5e 100644 --- a/ir.h +++ b/ir.h @@ -67,12 +67,17 @@ typedef struct ir_value_s { int32_t local; /* added for members */ int32_t addroffset; + /* to generate field-addresses early */ + int32_t fieldaddr; } code; /* for acessing vectors */ struct ir_value_s *members[3]; struct ir_value_s *memberof; + /* arrays will never overlap with temps */ + bool unique_life; + /* For the temp allocator */ ir_life_entry_t *life; } ir_value; @@ -204,7 +209,7 @@ ir_value* ir_block_create_div(ir_block*, lex_ctx, const char *label, ir_value *l ir_instr* ir_block_create_phi(ir_block*, lex_ctx, const char *label, int vtype); ir_value* ir_phi_value(ir_instr*); void ir_phi_add(ir_instr*, ir_block *b, ir_value *v); -ir_instr* ir_block_create_call(ir_block*, lex_ctx, const char *label, ir_value *func); +ir_instr* ir_block_create_call(ir_block*, lex_ctx, const char *label, ir_value *func, bool noreturn); ir_value* ir_call_value(ir_instr*); void ir_call_param(ir_instr*, ir_value*);