@@ -10927,7 +10927,7 @@ static zend_bool zend_jit_may_reuse_reg(const zend_op_array *op_array, zend_ssa
10927
10927
return 0;
10928
10928
}
10929
10929
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)
10931
10931
{
10932
10932
uint32_t op1_info, op2_info;
10933
10933
@@ -10993,7 +10993,7 @@ static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zen
10993
10993
return 0;
10994
10994
}
10995
10995
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)
10997
10997
{
10998
10998
if (ssa->vars[var].no_val) {
10999
10999
/* 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
11024
11024
return 0;
11025
11025
}
11026
11026
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
+
11027
11036
if (ssa->vars[var].definition >= 0) {
11028
11037
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)) {
11030
11039
return 0;
11031
11040
}
11032
11041
}
@@ -11036,7 +11045,7 @@ static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa
11036
11045
11037
11046
do {
11038
11047
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)) {
11040
11049
return 0;
11041
11050
}
11042
11051
use = zend_ssa_next_use(ssa->ops, var, use);
0 commit comments