Fixed type inference

This commit is contained in:
Dmitry Stogov 2017-10-30 10:41:27 +03:00
parent 63c0ecc445
commit 230e505fd8

View file

@ -3075,7 +3075,13 @@ static int zend_update_type_info(const zend_op_array *op_array,
} }
j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j); j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j);
} }
if ((tmp & MAY_BE_ARRAY)
&& (tmp & (MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING))) {
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def); UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
} else {
/* invalid key type */
UPDATE_SSA_TYPE(t1, ssa_ops[i].op1_def);
}
COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def); COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
} }
/* FETCH_LIST on a string behaves like FETCH_R on null */ /* FETCH_LIST on a string behaves like FETCH_R on null */