Skip to content

Commit

Permalink
ir_instr can now store a list of parameters, will be used for CALLs
Browse files Browse the repository at this point in the history
  • Loading branch information
Wolfgang (Blub) Bumiller committed Jun 28, 2012
1 parent 5500785 commit 2073834
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
12 changes: 12 additions & 0 deletions ir.c
Expand Up @@ -356,6 +356,7 @@ ir_instr* ir_instr_new(ir_block* owner, int op)
self->bops[0] = NULL; self->bops[0] = NULL;
self->bops[1] = NULL; self->bops[1] = NULL;
MEM_VECTOR_INIT(self, phi); MEM_VECTOR_INIT(self, phi);
MEM_VECTOR_INIT(self, params);


self->eid = 0; self->eid = 0;
return self; return self;
Expand All @@ -379,6 +380,14 @@ void ir_instr_delete(ir_instr *self)
if (ir_value_reads_remove (self->phi[i].value, idx)) GMQCC_SUPRESS_EMPTY_BODY; if (ir_value_reads_remove (self->phi[i].value, idx)) GMQCC_SUPRESS_EMPTY_BODY;
} }
MEM_VECTOR_CLEAR(self, phi); MEM_VECTOR_CLEAR(self, phi);
for (i = 0; i < self->params_count; ++i) {
size_t idx;
if (ir_value_writes_find(self->params[i], self, &idx))
if (ir_value_writes_remove(self->params[i], idx)) GMQCC_SUPRESS_EMPTY_BODY;
if (ir_value_reads_find(self->params[i], self, &idx))
if (ir_value_reads_remove (self->params[i], idx)) GMQCC_SUPRESS_EMPTY_BODY;
}
MEM_VECTOR_CLEAR(self, params);
if (ir_instr_op(self, 0, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY; if (ir_instr_op(self, 0, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY;
if (ir_instr_op(self, 1, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY; if (ir_instr_op(self, 1, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY;
if (ir_instr_op(self, 2, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY; if (ir_instr_op(self, 2, NULL, false)) GMQCC_SUPRESS_EMPTY_BODY;
Expand Down Expand Up @@ -2109,6 +2118,9 @@ static bool gen_blocks_recursive(ir_function *func, ir_block *block)
} }


if (instr->opcode >= INSTR_CALL0 && instr->opcode <= INSTR_CALL8) { if (instr->opcode >= INSTR_CALL0 && instr->opcode <= INSTR_CALL8) {
/* Trivial call translation:
* copy all params to OFS_PARM*
*/
printf("TODO: call instruction\n"); printf("TODO: call instruction\n");
return false; return false;
} }
Expand Down
1 change: 1 addition & 0 deletions ir.h
Expand Up @@ -115,6 +115,7 @@ typedef struct ir_instr_s
struct ir_block_s* (bops[2]); struct ir_block_s* (bops[2]);


MEM_VECTOR_MAKE(ir_phi_entry_t, phi); MEM_VECTOR_MAKE(ir_phi_entry_t, phi);
MEM_VECTOR_MAKE(ir_value*, params);


/* For the temp-allocation */ /* For the temp-allocation */
size_t eid; size_t eid;
Expand Down

0 comments on commit 2073834

Please sign in to comment.