From: Michael D. Lowis Date: Mon, 26 Jul 2021 04:06:47 +0000 (-0400) Subject: checkpoint commit X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=c0cb5abe5ad686e4cbf88f9b2bb3c5bdb99fae01;p=proto%2Fobnc.git checkpoint commit --- diff --git a/cerise/inc/cerise.h b/cerise/inc/cerise.h index 2dc7dc9..866d583 100644 --- a/cerise/inc/cerise.h +++ b/cerise/inc/cerise.h @@ -163,7 +163,7 @@ typedef struct { char* name; long curr_reg; size_t scope; - + size_t blockid; SsaBlock* curr_block; SsaBlock* curr_join; @@ -242,7 +242,7 @@ SsaNode* ssa_store(Parser* p, SsaNode* dest, SsaNode* value); 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); diff --git a/cerise/src/grammar.c b/cerise/src/grammar.c index 10d0839..f2dbed1 100644 --- a/cerise/src/grammar.c +++ b/cerise/src/grammar.c @@ -395,7 +395,7 @@ static Type* type(Parser* p) static SsaBlock* statement_seq(Parser* p) { ENTER_RULE(); - p->curr_block = ssa_block(); + p->curr_block = ssa_block(p); do { @@ -531,7 +531,7 @@ void proc_decl(Parser* p) /* parse the private declarations */ if (accept(p, CONST)) { - p->curr_block = ssa_block(); + p->curr_block = ssa_block(p); const_decl(p); } diff --git a/cerise/src/ssa.c b/cerise/src/ssa.c index 0612aed..9daf689 100644 --- a/cerise/src/ssa.c +++ b/cerise/src/ssa.c @@ -125,9 +125,11 @@ SsaNode* ssa_index(Parser* p, SsaNode* array, SsaNode* index) 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)