From 4c1b8621e1fcc2ef7cdcb683866e23c62dcd41ea Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 20 Sep 2022 20:07:55 -0400 Subject: [PATCH] fixed if statements --- cerise/src/ssa.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/cerise/src/ssa.c b/cerise/src/ssa.c index 53f497a..50eaa95 100644 --- a/cerise/src/ssa.c +++ b/cerise/src/ssa.c @@ -219,6 +219,13 @@ SsaBlock* ssa_block(Parser* p) return block; } +static SsaNode* ssa_blocknode(SsaBlock* block) +{ + SsaNode* node = ssa_node(BEGIN, MODE_CTRL); + node->value.block = block; + return node; +} + void ssa_block_add(SsaBlock* blk, SsaNode* node) { if (blk->head == 0) @@ -237,11 +244,10 @@ SsaNode* ssa_if(Parser* p, SsaNode* cond, SsaBlock* br1, SsaBlock* br2) { cond = load(p, cond); SsaNode* node = ssa_node(IF, MODE_CTRL); - node->left = cond; - SSA_LBLK(node) = br1; - SSA_RBLK(node) = br2; + node->left = ssa_blocknode(br1); + node->right = ssa_blocknode(br2); node = load(p, node); - SSA_VAR(node) = SSA_VAR(cond); // TODO: unnecessary? + SSA_VAR(node) = SSA_VAR(cond); return node; } @@ -274,13 +280,13 @@ SsaNode* ssa_return(Parser* p, SsaNode* expr) SsaNode* ssa_branch(Parser* p, SsaBlock* br) { SsaNode* node = ssa_node(BRANCH, MODE_CTRL); + node->left = ssa_blocknode(br); SSA_LBLK(node) = br; ssa_block_add(p->curr_block, node); node->loaded = 1; return node; } - SsaNode* ssa_call(SsaNode* func); void ssa_call_add(SsaBlock* call, SsaNode* arg); -- 2.49.0