diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-07-15 02:56:54 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-15 23:01:28 -0400 |
commit | 66c006eb6d70bec771ff14e924aabf221f3767a4 (patch) | |
tree | adb750b52e7b9a07c13b6337fcf85e86d3550d01 | |
parent | 68c6feefbde175fbc27d8f638d3fbd7e92432171 (diff) | |
download | roux-66c006eb6d70bec771ff14e924aabf221f3767a4.tar.gz |
fix some parsing bug of phi nodes
-rw-r--r-- | lisc/parse.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lisc/parse.c b/lisc/parse.c index 0af054f..6b035ab 100644 --- a/lisc/parse.c +++ b/lisc/parse.c @@ -322,13 +322,13 @@ parseline(PState ps) curb->nins = curi - ins; curb->ins = alloc(curb->nins * sizeof(Ins)); memcpy(curb->ins, ins, curb->nins * sizeof(Ins)); - plink = &curb->phi; if (curb->jmp.type == JXXX) { curb->jmp.type = JJmp; curb->s1 = b; } } curb = b; + plink = &curb->phi; if (curb->jmp.type != JXXX) err("multiple definitions of block"); expect(TNL); @@ -424,6 +424,7 @@ parseline(PState ps) memcpy(phi->arg, arg, i * sizeof arg[0]); memcpy(phi->blk, blk, i * sizeof blk[0]); phi->narg = i; + *plink = phi; plink = &phi->link; return PPhi; } |