char* name;
long curr_reg;
size_t scope;
-
+ size_t blockid;
SsaBlock* curr_block;
SsaBlock* curr_join;
SsaNode* ssa_fieldref(Parser* p, SsaNode* record, char* fname);
SsaNode* ssa_index(Parser* p, SsaNode* array, SsaNode* index);
-SsaBlock* ssa_block(void);
+SsaBlock* ssa_block(Parser* p);
void ssa_block_add(SsaBlock* blk, SsaNode* stmt);
SsaNode* ssa_if(SsaNode* cond, SsaBlock* br1, SsaBlock* br2);
static SsaBlock* statement_seq(Parser* p)
{
ENTER_RULE();
- p->curr_block = ssa_block();
+ p->curr_block = ssa_block(p);
do
{
/* parse the private declarations */
if (accept(p, CONST))
{
- p->curr_block = ssa_block();
+ p->curr_block = ssa_block(p);
const_decl(p);
}
return NULL;
}
-SsaBlock* ssa_block(void)
+SsaBlock* ssa_block(Parser* p)
{
- return calloc(1, sizeof(SsaBlock));
+ SsaBlock* block = calloc(1, sizeof(SsaBlock));
+ block->id = p->blockid++;
+ return block;
}
void ssa_block_add(SsaBlock* blk, SsaNode* node)