@@ -2254,21 +2254,31 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var,
2254
2254
zend_optimizer_update_op1_const (ctx -> scdf .op_array , opline , value );
2255
2255
}
2256
2256
return 0 ;
2257
- } else {
2258
- zend_ssa_remove_result_def (ssa , ssa_op );
2259
- if (opline -> opcode == ZEND_DO_ICALL ) {
2260
- removed_ops = remove_call (ctx , opline , ssa_op );
2261
- } else if (opline -> opcode == ZEND_TYPE_CHECK
2262
- && (opline -> op1_type & (IS_VAR |IS_TMP_VAR ))
2263
- && (!value_known (& ctx -> values [ssa_op -> op1_use ])
2264
- || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op1_use ])
2265
- || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op1_use ]))) {
2257
+ } else if ((opline -> op2_type & (IS_VAR |IS_TMP_VAR ))
2258
+ && (!value_known (& ctx -> values [ssa_op -> op2_use ])
2259
+ || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op2_use ])
2260
+ || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op2_use ]))) {
2261
+ return 0 ;
2262
+ } else if ((opline -> op1_type & (IS_VAR |IS_TMP_VAR ))
2263
+ && (!value_known (& ctx -> values [ssa_op -> op1_use ])
2264
+ || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op1_use ])
2265
+ || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op1_use ]))) {
2266
+ if (opline -> opcode == ZEND_TYPE_CHECK
2267
+ || opline -> opcode == ZEND_BOOL ) {
2268
+ zend_ssa_remove_result_def (ssa , ssa_op );
2266
2269
/* For TYPE_CHECK we may compute the result value without knowing the
2267
2270
* operand, based on type inference information. Make sure the operand is
2268
2271
* freed and leave further cleanup to DCE. */
2269
2272
opline -> opcode = ZEND_FREE ;
2270
2273
opline -> result_type = IS_UNUSED ;
2271
2274
removed_ops ++ ;
2275
+ } else {
2276
+ return 0 ;
2277
+ }
2278
+ } else {
2279
+ zend_ssa_remove_result_def (ssa , ssa_op );
2280
+ if (opline -> opcode == ZEND_DO_ICALL ) {
2281
+ removed_ops = remove_call (ctx , opline , ssa_op );
2272
2282
} else {
2273
2283
zend_ssa_remove_instr (ssa , opline , ssa_op );
2274
2284
removed_ops ++ ;
0 commit comments