Skip to content

Commit 5ca5f06

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: JIT: Fix register clobbering
2 parents 8c60e21 + 8b8cf8f commit 5ca5f06

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

ext/opcache/jit/zend_jit_arm64.dasc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3811,15 +3811,15 @@ static int zend_jit_inc_dec(dasm_State **Dst, const zend_op *opline, uint32_t op
38113811
| LOAD_64BIT_VAL TMP1, val
38123812
| fmov Rd(Z_REG(op1_def_addr)-ZREG_V0), TMP1
38133813
} else {
3814-
| SET_ZVAL_LVAL op1_def_addr, val, REG0, TMP1
3814+
| SET_ZVAL_LVAL op1_def_addr, val, TMP2, TMP1
38153815
}
38163816
} else {
38173817
uint64_t val = 0xc3e0000000000000;
38183818
if (Z_MODE(op1_def_addr) == IS_REG) {
38193819
| LOAD_64BIT_VAL TMP1, val
38203820
| fmov Rd(Z_REG(op1_def_addr)-ZREG_V0), TMP1
38213821
} else {
3822-
| SET_ZVAL_LVAL op1_def_addr, val, REG0, TMP1
3822+
| SET_ZVAL_LVAL op1_def_addr, val, TMP2, TMP1
38233823
}
38243824
}
38253825
if (Z_MODE(op1_def_addr) == IS_MEM_ZVAL) {
@@ -4150,7 +4150,7 @@ static int zend_jit_math_long_long(dasm_State **Dst,
41504150
| LOAD_64BIT_VAL TMP1, val
41514151
| fmov Rd(Z_REG(res_addr)-ZREG_V0), TMP1
41524152
} else {
4153-
| SET_ZVAL_LVAL res_addr, val, REG0, TMP1
4153+
| SET_ZVAL_LVAL res_addr, val, TMP2, TMP1
41544154
}
41554155
break;
41564156
} else if (opcode == ZEND_SUB) {
@@ -4159,7 +4159,7 @@ static int zend_jit_math_long_long(dasm_State **Dst,
41594159
| LOAD_64BIT_VAL TMP1, val
41604160
| fmov Rd(Z_REG(res_addr)-ZREG_V0), TMP1
41614161
} else {
4162-
| SET_ZVAL_LVAL res_addr, val, REG0, TMP1
4162+
| SET_ZVAL_LVAL res_addr, val, TMP2, TMP1
41634163
}
41644164
break;
41654165
}
@@ -12799,20 +12799,20 @@ static int zend_jit_incdec_obj(dasm_State **Dst,
1279912799
|3:
1280012800
if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_POST_INC_OBJ) {
1280112801
uint64_t val = 0x43e0000000000000;
12802-
| LOAD_64BIT_VAL REG0, val
12803-
| SET_ZVAL_LVAL_FROM_REG var_addr, REG0, TMP1
12802+
| LOAD_64BIT_VAL TMP2, val
12803+
| SET_ZVAL_LVAL_FROM_REG var_addr, TMP2, TMP1
1280412804
| SET_ZVAL_TYPE_INFO var_addr, IS_DOUBLE, TMP1w, TMP2
1280512805
if (opline->opcode == ZEND_PRE_INC_OBJ && opline->result_type != IS_UNUSED) {
12806-
| SET_ZVAL_LVAL_FROM_REG res_addr, REG0, TMP1
12806+
| SET_ZVAL_LVAL_FROM_REG res_addr, TMP2, TMP1
1280712807
| SET_ZVAL_TYPE_INFO res_addr, IS_DOUBLE, TMP1w, TMP2
1280812808
}
1280912809
} else {
1281012810
uint64_t val = 0xc3e0000000000000;
12811-
| LOAD_64BIT_VAL REG0, val
12812-
| SET_ZVAL_LVAL_FROM_REG var_addr, REG0, TMP1
12811+
| LOAD_64BIT_VAL TMP2, val
12812+
| SET_ZVAL_LVAL_FROM_REG var_addr, TMP2, TMP1
1281312813
| SET_ZVAL_TYPE_INFO var_addr, IS_DOUBLE, TMP1w, TMP2
1281412814
if (opline->opcode == ZEND_PRE_DEC_OBJ && opline->result_type != IS_UNUSED) {
12815-
| SET_ZVAL_LVAL_FROM_REG res_addr, REG0, TMP1
12815+
| SET_ZVAL_LVAL_FROM_REG res_addr, TMP2, TMP1
1281612816
| SET_ZVAL_TYPE_INFO res_addr, IS_DOUBLE, TMP1w, TMP2
1281712817
}
1281812818
}

ext/opcache/tests/jit/assign_dim_op_007.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ opcache.enable=1
55
opcache.enable_cli=1
66
opcache.file_update_protection=0
77
opcache.jit_buffer_size=1M
8-
--XFAIL--
9-
See https://github.com/php/php-src/issues/8147
108
--FILE--
119
<?php
1210
class test {

0 commit comments

Comments
 (0)