瀏覽代碼

Fix FOLD rule for BUFHDR append.

Reported by XmiliaH.
Mike Pall 3 年之前
父節點
當前提交
bc1bdbf620
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/lj_opt_fold.c

+ 2 - 1
src/lj_opt_fold.c

@@ -597,7 +597,8 @@ LJFOLDF(bufput_bufstr)
     /* New buffer, no other buffer op inbetween and same buffer? */
     /* New buffer, no other buffer op inbetween and same buffer? */
     if (fleft->o == IR_BUFHDR && fleft->op2 == IRBUFHDR_RESET &&
     if (fleft->o == IR_BUFHDR && fleft->op2 == IRBUFHDR_RESET &&
 	fleft->prev == hdr &&
 	fleft->prev == hdr &&
-	fleft->op1 == IR(hdr)->op1) {
+	fleft->op1 == IR(hdr)->op1 &&
+	!(irt_isphi(fright->t) && IR(hdr)->prev)) {
       IRRef ref = fins->op1;
       IRRef ref = fins->op1;
       IR(ref)->op2 = IRBUFHDR_APPEND;  /* Modify BUFHDR. */
       IR(ref)->op2 = IRBUFHDR_APPEND;  /* Modify BUFHDR. */
       IR(ref)->op1 = fright->op1;
       IR(ref)->op1 = fright->op1;