Lines Matching refs:ssa_op
788 const zend_op *opline, const zend_ssa_op *ssa_op, uint8_t opcode, zend_ssa_range *tmp) { in zend_inference_calc_binary_op_range() argument
1075 const zend_ssa_op *ssa_op; in zend_inference_calc_range() local
1247 ssa_op = &ssa->ops[line]; in zend_inference_calc_range()
1249 return zend_inference_propagate_range(op_array, ssa, opline, ssa_op, var, tmp); in zend_inference_calc_range()
1252 …op_array, const zend_ssa *ssa, const zend_op *opline, const zend_ssa_op* ssa_op, int var, zend_ssa… in zend_inference_propagate_range() argument
1267 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1269 op_array, ssa, opline, ssa_op, opline->opcode, tmp); in zend_inference_propagate_range()
1274 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1291 if (ssa_op->op1_def == var) { in zend_inference_propagate_range()
1292 if (ssa_op->op1_def >= 0) { in zend_inference_propagate_range()
1301 } else if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1319 if (ssa_op->op1_def == var) { in zend_inference_propagate_range()
1320 if (ssa_op->op1_def >= 0) { in zend_inference_propagate_range()
1330 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1341 if (ssa_op->op1_def == var) { in zend_inference_propagate_range()
1342 if (ssa_op->op1_def >= 0) { in zend_inference_propagate_range()
1354 if (ssa_op->op1_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1373 if (ssa_op->op1_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1392 if (ssa_op->op1_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1398 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1414 if (ssa_op->op1_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1420 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1437 if (ssa_op->op1_def == var) { in zend_inference_propagate_range()
1450 if (ssa_op->op1_def == var || ssa_op->op2_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1466 if ((ssa_op+1)->op1_def == var) { in zend_inference_propagate_range()
1468 ssa_op++; in zend_inference_propagate_range()
1481 if (ssa_op->op1_def == var || ssa_op->result_def == var) { in zend_inference_propagate_range()
1483 op_array, ssa, opline, ssa_op, in zend_inference_propagate_range()
1489 if (ssa_op->op1_def == var) { in zend_inference_propagate_range()
1509 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1525 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
1551 if (ssa_op->result_def == var) { in zend_inference_propagate_range()
2429 …nfo(const zend_op_array *op_array, zend_ssa *ssa, const zend_op *opline, const zend_ssa_op *ssa_op) in zend_fetch_prop_info() argument
2437 } else if (ssa_op->op1_use >= 0) { in zend_fetch_prop_info()
2438 ce = ssa->var_info[ssa_op->op1_use].ce; in zend_fetch_prop_info()
2500 static bool result_may_be_separated(zend_ssa *ssa, zend_ssa_op *ssa_op) in result_may_be_separated() argument
2502 int tmp_var = ssa_op->result_def; in result_may_be_separated()
2509 if (use_op == ssa_op + 1) { in result_may_be_separated()
2525 zend_ssa_op *ssa_op, in _zend_update_type_info() argument
2539 ssa_op--; in _zend_update_type_info()
2550 || (ssa_op->result_use >= 0 && !(RES_USE_INFO() & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_CLASS))) in _zend_update_type_info()
2558 if (ssa_op->result_def >= 0 && !(ssa_var_info[ssa_op->result_def].type & MAY_BE_REF)) { in _zend_update_type_info()
2559 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2561 if (ssa_op->op1_def >= 0 && !(ssa_var_info[ssa_op->op1_def].type & MAY_BE_REF)) { in _zend_update_type_info()
2562 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2564 if (ssa_op->op2_def >= 0 && !(ssa_var_info[ssa_op->op2_def].type & MAY_BE_REF)) { in _zend_update_type_info()
2565 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
2572 if ((ssa_op+1)->op1_def >= 0 && !(ssa_var_info[(ssa_op+1)->op1_def].type & MAY_BE_REF)) { in _zend_update_type_info()
2573 UPDATE_SSA_TYPE(tmp, (ssa_op+1)->op1_def); in _zend_update_type_info()
2592 tmp = binary_op_result_type(ssa, opline->opcode, t1, t2, ssa_op->result_def, optimization_level); in _zend_update_type_info()
2593 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2609 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2612 UPDATE_SSA_TYPE(MAY_BE_LONG, ssa_op->result_def); in _zend_update_type_info()
2636 UPDATE_SSA_TYPE(MAY_BE_FALSE|MAY_BE_TRUE, ssa_op->result_def); in _zend_update_type_info()
2639 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
2649 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2650 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
2684 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2690 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
2695 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2696 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
2719 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2720 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->result_def); in _zend_update_type_info()
2733 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2745 prop_info = zend_fetch_prop_info(op_array, ssa, opline, ssa_op); in _zend_update_type_info()
2768 opline->opcode == ZEND_ASSIGN_OP ? ssa_op->op1_def : -1, optimization_level); in _zend_update_type_info()
2779 UPDATE_SSA_TYPE(orig, ssa_op->op1_def); in _zend_update_type_info()
2780 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
2785 UPDATE_SSA_TYPE(orig, ssa_op->op1_def); in _zend_update_type_info()
2786 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
2791 if (opline->opcode == ZEND_ASSIGN_OP && ssa_op->result_def >= 0 && (tmp & MAY_BE_RC1)) { in _zend_update_type_info()
2794 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2796 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
2862 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2864 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
2874 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
2879 if (!ssa_var_info[ssa_op->op1_use].has_range || in _zend_update_type_info()
2881 (ssa_var_info[ssa_op->op1_use].range.underflow || in _zend_update_type_info()
2882 ssa_var_info[ssa_op->op1_use].range.min == ZEND_LONG_MIN)) || in _zend_update_type_info()
2884 (ssa_var_info[ssa_op->op1_use].range.overflow || in _zend_update_type_info()
2885 ssa_var_info[ssa_op->op1_use].range.max == ZEND_LONG_MAX))) { in _zend_update_type_info()
2910 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
2911 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2913 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
2917 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2922 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
2931 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
2941 if (!ssa_var_info[ssa_op->op1_use].has_range || in _zend_update_type_info()
2943 (ssa_var_info[ssa_op->op1_use].range.underflow || in _zend_update_type_info()
2944 ssa_var_info[ssa_op->op1_use].range.min == ZEND_LONG_MIN)) || in _zend_update_type_info()
2946 (ssa_var_info[ssa_op->op1_use].range.overflow || in _zend_update_type_info()
2947 ssa_var_info[ssa_op->op1_use].range.max == ZEND_LONG_MAX))) { in _zend_update_type_info()
2972 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
2973 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2979 …tmp |= ssa->var_info[ssa_op->op1_def].type & (MAY_BE_ARRAY_PACKED|MAY_BE_ARRAY_NUMERIC_HASH|MAY_BE… in _zend_update_type_info()
2980 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
2981 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
2983 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3006 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3008 if ((ssa_op+1)->op1_def >= 0) { in _zend_update_type_info()
3010 ssa_op++; in _zend_update_type_info()
3017 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3022 zend_class_entry *ce = ssa_var_info[ssa_op->op1_use].ce; in _zend_update_type_info()
3028 || ssa_var_info[ssa_op->op1_use].is_instanceof); in _zend_update_type_info()
3030 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3031 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3033 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3036 zend_fetch_prop_info(op_array, ssa, opline, ssa_op), &ce); in _zend_update_type_info()
3037 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3039 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
3042 if ((ssa_op+1)->op1_def >= 0) { in _zend_update_type_info()
3044 ssa_op++; in _zend_update_type_info()
3049 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3053 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3055 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3057 if ((ssa_op+1)->op1_def >= 0) { in _zend_update_type_info()
3059 ssa_op++; in _zend_update_type_info()
3064 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3073 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3074 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3076 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3079 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3083 if (ssa_op->op2_def >= 0) { in _zend_update_type_info()
3088 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
3107 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3108 if (ssa_var_info[ssa_op->op1_def].use_as_double) { in _zend_update_type_info()
3112 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3113 COPY_SSA_OBJ_TYPE(ssa_op->op2_use, ssa_op->op1_def); in _zend_update_type_info()
3115 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3124 if (ssa->vars[ssa_op->result_def].use_chain < 0 in _zend_update_type_info()
3125 || opline + 1 != op_array->opcodes + ssa->vars[ssa_op->result_def].use_chain) { in _zend_update_type_info()
3129 if (ssa->vars[ssa_op->result_def].use_chain < 0 in _zend_update_type_info()
3130 || opline + 1 != ssa_opcodes[ssa->vars[ssa_op->result_def].use_chain]) { in _zend_update_type_info()
3135 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3136 COPY_SSA_OBJ_TYPE(ssa_op->op2_use, ssa_op->result_def); in _zend_update_type_info()
3146 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
3156 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3157 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3158 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3162 if (opline->op1_type == IS_CV && ssa_op->op1_def >= 0) { in _zend_update_type_info()
3167 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3168 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3180 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3181 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3185 ssa_op++; in _zend_update_type_info()
3190 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3194 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3195 UPDATE_SSA_TYPE(MAY_BE_REF, ssa_op->result_def); in _zend_update_type_info()
3199 ssa_op++; in _zend_update_type_info()
3200 UPDATE_SSA_TYPE(MAY_BE_REF, ssa_op->op1_def); in _zend_update_type_info()
3206 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3214 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3218 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3221 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3226 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3227 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3231 if (ssa_op->op2_def >= 0) { in _zend_update_type_info()
3240 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
3241 COPY_SSA_OBJ_TYPE(ssa_op->op2_use, ssa_op->op2_def); in _zend_update_type_info()
3245 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3254 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3255 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3257 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3260 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3265 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3267 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3271 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3273 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3277 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3289 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3296 UPDATE_SSA_TYPE(MAY_BE_STRING|MAY_BE_RC1|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
3320 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3322 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
3324 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3329 UPDATE_SSA_TYPE(MAY_BE_CLASS, ssa_op->result_def); in _zend_update_type_info()
3331 UPDATE_SSA_OBJ_TYPE(ce, 0, ssa_op->result_def); in _zend_update_type_info()
3335 UPDATE_SSA_TYPE(MAY_BE_CLASS, ssa_op->result_def); in _zend_update_type_info()
3340 UPDATE_SSA_OBJ_TYPE(op_array->scope, 0, ssa_op->result_def); in _zend_update_type_info()
3342 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3347 UPDATE_SSA_OBJ_TYPE(op_array->scope->parent, 0, ssa_op->result_def); in _zend_update_type_info()
3349 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3354 UPDATE_SSA_OBJ_TYPE(op_array->scope, 0, ssa_op->result_def); in _zend_update_type_info()
3356 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3360 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3367 UPDATE_SSA_OBJ_TYPE(ce, 0, ssa_op->result_def); in _zend_update_type_info()
3369 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3372 COPY_SSA_OBJ_TYPE(ssa_op->op2_use, ssa_op->result_def); in _zend_update_type_info()
3379 UPDATE_SSA_OBJ_TYPE(ce, 0, ssa_op->result_def); in _zend_update_type_info()
3380 } else if ((t1 & MAY_BE_CLASS) && ssa_op->op1_use >= 0 && ssa_var_info[ssa_op->op1_use].ce) { in _zend_update_type_info()
3381 …UPDATE_SSA_OBJ_TYPE(ssa_var_info[ssa_op->op1_use].ce, ssa_var_info[ssa_op->op1_use].is_instanceof,… in _zend_update_type_info()
3382 if (!ssa_var_info[ssa_op->result_def].is_instanceof) { in _zend_update_type_info()
3383 ce = ssa_var_info[ssa_op->op1_use].ce; in _zend_update_type_info()
3386 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3395 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3398 UPDATE_SSA_TYPE(MAY_BE_RC1|MAY_BE_RCN|MAY_BE_OBJECT, ssa_op->result_def); in _zend_update_type_info()
3399 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->result_def); in _zend_update_type_info()
3403 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3422 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3424 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3443 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3447 tmp = ssa_var_info[ssa_op->result_use].type; in _zend_update_type_info()
3453 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3461 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3465 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3466 UPDATE_SSA_TYPE(t1, ssa_op->op1_def); in _zend_update_type_info()
3467 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3472 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3479 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3480 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3492 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3493 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->result_def); in _zend_update_type_info()
3529 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
3530 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3531 tmp = (ssa_op->result_use >= 0) ? RES_USE_INFO() : 0; in _zend_update_type_info()
3543 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3554 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3624 j = ssa_vars[ssa_op->result_def].use_chain; in _zend_update_type_info()
3705 j = zend_ssa_next_use(ssa->ops, ssa_op->result_def, j); in _zend_update_type_info()
3722 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3727 COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); in _zend_update_type_info()
3745 if (ssa->vars[ssa_op->result_def].use_chain < 0 in _zend_update_type_info()
3746 || opline + 1 != op_array->opcodes + ssa->vars[ssa_op->result_def].use_chain) { in _zend_update_type_info()
3750 if (ssa->vars[ssa_op->result_def].use_chain < 0 in _zend_update_type_info()
3751 || opline + 1 != ssa_opcodes[ssa->vars[ssa_op->result_def].use_chain]) { in _zend_update_type_info()
3756 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3760 UPDATE_SSA_OBJ_TYPE(op_array->scope, 1, ssa_op->result_def); in _zend_update_type_info()
3762 UPDATE_SSA_TYPE(MAY_BE_RCN|MAY_BE_OBJECT, ssa_op->result_def); in _zend_update_type_info()
3770 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3778 const zend_property_info *prop_info = zend_fetch_prop_info(op_array, ssa, opline, ssa_op); in _zend_update_type_info()
3791 } else if (ssa_op->op1_use >= 0 && !ssa->var_info[ssa_op->op1_use].is_instanceof) { in _zend_update_type_info()
3792 ce = ssa->var_info[ssa_op->op1_use].ce; in _zend_update_type_info()
3799 && !result_may_be_separated(ssa, ssa_op)) { in _zend_update_type_info()
3808 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3810 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
3830 if (!result_may_be_separated(ssa, ssa_op)) { in _zend_update_type_info()
3837 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3839 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
3845 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3846 ZEND_ASSERT(ssa_op->op1_use >= 0); in _zend_update_type_info()
3847 tmp = ssa->var_info[ssa_op->op1_use].type; in _zend_update_type_info()
3851 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3853 if (ssa_op->op2_def >= 0) { in _zend_update_type_info()
3854 ZEND_ASSERT(ssa_op->op2_use >= 0); in _zend_update_type_info()
3855 tmp = ssa->var_info[ssa_op->op2_use].type; in _zend_update_type_info()
3859 UPDATE_SSA_TYPE(tmp, ssa_op->op2_def); in _zend_update_type_info()
3862 zend_ssa_op *next_ssa_op = ssa_op + 1; in _zend_update_type_info()
3878 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
3893 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3895 UPDATE_SSA_OBJ_TYPE(ce, ce_is_instanceof, ssa_op->result_def); in _zend_update_type_info()
3900 UPDATE_SSA_TYPE(MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
3901 UPDATE_SSA_OBJ_TYPE(zend_ce_closure, /* is_instanceof */ false, ssa_op->result_def); in _zend_update_type_info()
3904 …YPE(MAY_BE_RC1|MAY_BE_RCN|MAY_BE_ANY|MAY_BE_ARRAY_KEY_ANY|MAY_BE_ARRAY_OF_ANY, ssa_op->result_def); in _zend_update_type_info()
3910 …YPE(MAY_BE_RC1|MAY_BE_RCN|MAY_BE_ANY|MAY_BE_ARRAY_KEY_ANY|MAY_BE_ARRAY_OF_ANY, ssa_op->result_def); in _zend_update_type_info()
3913 UPDATE_SSA_TYPE(zend_convert_type(script, cc->type, &ce), ssa_op->result_def); in _zend_update_type_info()
3915 UPDATE_SSA_OBJ_TYPE(ce, /* is_instanceof */ true, ssa_op->result_def); in _zend_update_type_info()
3922 UPDATE_SSA_TYPE(MAY_BE_LONG, ssa_op->result_def); in _zend_update_type_info()
3925 …E_RCN|MAY_BE_ARRAY|MAY_BE_ARRAY_EMPTY|MAY_BE_ARRAY_PACKED|MAY_BE_ARRAY_OF_ANY, ssa_op->result_def); in _zend_update_type_info()
3929 UPDATE_SSA_TYPE(MAY_BE_STRING|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
3932 UPDATE_SSA_TYPE(MAY_BE_STRING|MAY_BE_RC1|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
3949 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3953 UPDATE_SSA_TYPE(MAY_BE_FALSE|MAY_BE_TRUE, ssa_op->result_def); in _zend_update_type_info()
3974 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
3976 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->op1_def); in _zend_update_type_info()
3978 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->op1_def); in _zend_update_type_info()
3981 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3983 UPDATE_SSA_OBJ_TYPE(ce, 1, ssa_op->result_def); in _zend_update_type_info()
3985 UPDATE_SSA_OBJ_TYPE(NULL, 0, ssa_op->result_def); in _zend_update_type_info()
3991 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
3992 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
3993 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
4001 UPDATE_SSA_TYPE(MAY_BE_STRING|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
4004 UPDATE_SSA_TYPE(MAY_BE_BOOL, ssa_op->result_def); in _zend_update_type_info()
4007 UPDATE_SSA_TYPE(MAY_BE_OBJECT|MAY_BE_RC1|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
4008 UPDATE_SSA_OBJ_TYPE(zend_ce_closure, /* is_instanceof */ false, ssa_op->result_def); in _zend_update_type_info()
4014 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
4026 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
4031 UPDATE_SSA_TYPE(MAY_BE_LONG, ssa_op->result_def); in _zend_update_type_info()
4034 …E_ARRAY_KEY_ANY|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF|MAY_BE_RC1|MAY_BE_RCN, ssa_op->result_def); in _zend_update_type_info()
4038 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
4055 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
4058 if (ssa_op->op2_def >= 0) { in _zend_update_type_info()
4062 if (ssa_op->op1_def >= 0) { in _zend_update_type_info()
4064 UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); in _zend_update_type_info()
4067 if (ssa_op->result_def >= 0) { in _zend_update_type_info()
4102 UPDATE_SSA_TYPE(tmp, ssa_op->result_def); in _zend_update_type_info()
4115 zend_ssa_op *ssa_op, in zend_update_type_info() argument
4119 …return _zend_update_type_info(op_array, ssa, script, NULL, opline, ssa_op, ssa_opcodes, optimizati… in zend_update_type_info()
4316 zend_ssa_op *ssa_op = &ssa->ops[use]; in can_convert_to_double() local
4318 if (zend_ssa_is_no_val_use(opline, ssa_op, var_num)) { in can_convert_to_double()
4327 type = ssa->var_info[ssa_op->result_def].type; in can_convert_to_double()
4351 if (ssa_op->op1_use == var_num) { in can_convert_to_double()
4364 if (ssa_op->op2_use == var_num) { in can_convert_to_double()
4412 if (!can_convert_to_double(op_array, ssa, ssa_op->result_def, &orig_result, visited)) { in can_convert_to_double()
4588 zend_ssa_op *ssa_op = ssa->ops ? &ssa->ops[opline - op_array->opcodes] : NULL; in zend_func_return_info() local
4589 if (!recursive && ssa_op && info->ssa.var_info && in zend_func_return_info()
4590 ssa_op->op1_use >= 0 && in zend_func_return_info()
4591 info->ssa.var_info[ssa_op->op1_use].recursive) { in zend_func_return_info()
4612 if (ssa_op && info->ssa.var_info && in zend_func_return_info()
4613 ssa_op->op1_use >= 0 && !(t1 & MAY_BE_REF) && in zend_func_return_info()
4614 info->ssa.var_info[ssa_op->op1_use].ce) { in zend_func_return_info()
4615 arg_ce = info->ssa.var_info[ssa_op->op1_use].ce; in zend_func_return_info()
4616 arg_is_instanceof = info->ssa.var_info[ssa_op->op1_use].is_instanceof; in zend_func_return_info()
4655 } else if (ssa_op && info->ssa.var_info && ssa_op->op1_use >= 0) { in zend_func_return_info()
4656 if (info->ssa.var_info[ssa_op->op1_use].has_range) { in zend_func_return_info()
4659 tmp_range = info->ssa.var_info[ssa_op->op1_use].range; in zend_func_return_info()
4662 if (info->ssa.var_info[ssa_op->op1_use].range.underflow) { in zend_func_return_info()
4666 tmp_range.min = MIN(tmp_range.min, info->ssa.var_info[ssa_op->op1_use].range.min); in zend_func_return_info()
4668 if (info->ssa.var_info[ssa_op->op1_use].range.overflow) { in zend_func_return_info()
4672 tmp_range.max = MAX(tmp_range.max, info->ssa.var_info[ssa_op->op1_use].range.max); in zend_func_return_info()
4917 ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_arr… in zend_may_throw_ex() argument
5046 return zend_may_throw(opline + 1, ssa_op ? ssa_op + 1 : NULL, op_array, ssa); in zend_may_throw_ex()
5201 if (ssa_op->op1_use) { in zend_may_throw_ex()
5202 const zend_ssa_var_info *var_info = ssa->var_info + ssa_op->op1_use; in zend_may_throw_ex()
5332 ZEND_API bool zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array … in zend_may_throw() argument
5334 return zend_may_throw_ex(opline, ssa_op, op_array, ssa, OP1_INFO(), OP2_INFO()); in zend_may_throw()