@@ -1196,9 +1196,11 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1196
1196
} else {
1197
1197
ssa_var_info [i ].type = MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF ;
1198
1198
}
1199
- } else {
1199
+ } else if ( op_array -> function_name ) {
1200
1200
ssa_vars [i ].no_val = ssa -> vars ? ssa -> vars [i ].no_val : 0 ;
1201
1201
ssa_var_info [i ].type = MAY_BE_UNDEF ;
1202
+ } else {
1203
+ ssa_var_info [i ].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF ;
1202
1204
}
1203
1205
i ++ ;
1204
1206
}
@@ -1591,9 +1593,11 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1591
1593
} else {
1592
1594
ssa_var_info [v ].type = MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF ;
1593
1595
}
1594
- } else {
1596
+ } else if ( op_array -> function_name ) {
1595
1597
ssa_vars [v ].no_val = ssa -> vars ? ssa -> vars [i ].no_val : 0 ;
1596
1598
ssa_var_info [v ].type = MAY_BE_UNDEF ;
1599
+ } else {
1600
+ ssa_var_info [v ].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF ;
1597
1601
}
1598
1602
if (!(op_array -> fn_flags & ZEND_ACC_HAS_TYPE_HINTS )
1599
1603
&& i < op_array -> num_args ) {
@@ -2588,6 +2592,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
2588
2592
ssa -> var_info [i ].type = info ;
2589
2593
SET_STACK_TYPE (stack , i , concrete_type (info ));
2590
2594
} else if (trace_buffer -> start == ZEND_JIT_TRACE_START_ENTER
2595
+ && op_array -> function_name
2591
2596
&& i >= op_array -> num_args ) {
2592
2597
/* This must be already handled by trace type inference */
2593
2598
ZEND_ASSERT (0 );
0 commit comments