@@ -10927,7 +10927,7 @@ static zend_bool zend_jit_may_reuse_reg(const zend_op_array *op_array, zend_ssa
1092710927 return 0;
1092810928}
1092910929
10930- static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zend_ssa *ssa, zend_op *opline, const zend_ssa_op *ssa_op, int var )
10930+ static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zend_ssa *ssa, const zend_op *opline, const zend_ssa_op *ssa_op)
1093110931{
1093210932 uint32_t op1_info, op2_info;
1093310933
@@ -10993,7 +10993,7 @@ static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zen
1099310993 return 0;
1099410994}
1099510995
10996- static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa *ssa, int var)
10996+ static zend_bool zend_jit_var_supports_reg( zend_ssa *ssa, int var)
1099710997{
1099810998 if (ssa->vars[var].no_val) {
1099910999 /* we don't need the value */
@@ -11024,9 +11024,18 @@ static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa
1102411024 return 0;
1102511025 }
1102611026
11027+ return 1;
11028+ }
11029+
11030+ static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa *ssa, int var)
11031+ {
11032+ if (!zend_jit_var_supports_reg(ssa, var)) {
11033+ return 0;
11034+ }
11035+
1102711036 if (ssa->vars[var].definition >= 0) {
1102811037 uint32_t def = ssa->vars[var].definition;
11029- if (!zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + def, ssa->ops + def, var )) {
11038+ if (!zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + def, ssa->ops + def)) {
1103011039 return 0;
1103111040 }
1103211041 }
@@ -11036,7 +11045,7 @@ static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa
1103611045
1103711046 do {
1103811047 if (!zend_ssa_is_no_val_use(op_array->opcodes + use, ssa->ops + use, var) &&
11039- !zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + use, ssa->ops + use, var )) {
11048+ !zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + use, ssa->ops + use)) {
1104011049 return 0;
1104111050 }
1104211051 use = zend_ssa_next_use(ssa->ops, var, use);
0 commit comments