]> granicus.if.org Git - php/commitdiff
Fixed register allocation for tests/lang/operators/preinc_basiclong_64bit.phpt
authorDmitry Stogov <dmitry@zend.com>
Thu, 9 Jul 2020 15:54:36 +0000 (18:54 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 9 Jul 2020 15:54:36 +0000 (18:54 +0300)
ext/opcache/jit/zend_jit_trace.c

index 880a2c4b6831a4c9e74788bf17c856a480c22a9d..b1d910c53491804db9eaa8974ace1bb230b5b46a 100644 (file)
@@ -2122,9 +2122,12 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
                                         || opline->opcode == ZEND_ADD
                                         || opline->opcode == ZEND_SUB
                                         || opline->opcode == ZEND_MUL) {
-                                               start[ssa_op->result_def] = idx;
-                                               vars_op_array[ssa_op->result_def] = op_array;
-                                               count++;
+                                               if (!(ssa->var_info[ssa_op->result_def].type & MAY_BE_DOUBLE)
+                                                || (opline->opcode != ZEND_PRE_INC && opline->opcode != ZEND_PRE_DEC)) {
+                                                       start[ssa_op->result_def] = idx;
+                                                       vars_op_array[ssa_op->result_def] = op_array;
+                                                       count++;
+                                               }
                                        }
                                }
                                if (ssa_op->op1_def >= 0