@@ -2275,21 +2275,31 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var,
2275
2275
zend_optimizer_update_op1_const (ctx -> scdf .op_array , opline , value );
2276
2276
}
2277
2277
return 0 ;
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 );
2282
- } else if (opline -> opcode == ZEND_TYPE_CHECK
2283
- && (opline -> op1_type & (IS_VAR |IS_TMP_VAR ))
2284
- && (!value_known (& ctx -> values [ssa_op -> op1_use ])
2285
- || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op1_use ])
2286
- || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op1_use ]))) {
2278
+ } else if ((opline -> op2_type & (IS_VAR |IS_TMP_VAR ))
2279
+ && (!value_known (& ctx -> values [ssa_op -> op2_use ])
2280
+ || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op2_use ])
2281
+ || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op2_use ]))) {
2282
+ return 0 ;
2283
+ } else if ((opline -> op1_type & (IS_VAR |IS_TMP_VAR ))
2284
+ && (!value_known (& ctx -> values [ssa_op -> op1_use ])
2285
+ || IS_PARTIAL_ARRAY (& ctx -> values [ssa_op -> op1_use ])
2286
+ || IS_PARTIAL_OBJECT (& ctx -> values [ssa_op -> op1_use ]))) {
2287
+ if (opline -> opcode == ZEND_TYPE_CHECK
2288
+ || opline -> opcode == ZEND_BOOL ) {
2289
+ zend_ssa_remove_result_def (ssa , ssa_op );
2287
2290
/* For TYPE_CHECK we may compute the result value without knowing the
2288
2291
* operand, based on type inference information. Make sure the operand is
2289
2292
* freed and leave further cleanup to DCE. */
2290
2293
opline -> opcode = ZEND_FREE ;
2291
2294
opline -> result_type = IS_UNUSED ;
2292
2295
removed_ops ++ ;
2296
+ } else {
2297
+ return 0 ;
2298
+ }
2299
+ } else {
2300
+ zend_ssa_remove_result_def (ssa , ssa_op );
2301
+ if (opline -> opcode == ZEND_DO_ICALL ) {
2302
+ removed_ops = remove_call (ctx , opline , ssa_op );
2293
2303
} else {
2294
2304
zend_ssa_remove_instr (ssa , opline , ssa_op );
2295
2305
removed_ops ++ ;
0 commit comments