]> git.mdlowis.com Git - proto/obnc.git/commitdiff
fixed if statements
authorMichael D. Lowis <mike@mdlowis.com>
Wed, 21 Sep 2022 00:07:55 +0000 (20:07 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Wed, 21 Sep 2022 00:07:55 +0000 (20:07 -0400)
cerise/src/ssa.c

index 53f497adc2da04e0e9de9710dc7fb21b2cb5f2ea..50eaa9512c985ea24e172ab52c02cfe9ead1b540 100644 (file)
@@ -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);