@@ -1940,6 +1940,16 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1940
1940
if (ssa_ops [idx ].result_def >= 0 ) {
1941
1941
zend_jit_trace_copy_ssa_var_range (op_array , ssa , ssa_opcodes , tssa , ssa_ops [idx ].result_def );
1942
1942
}
1943
+ } else {
1944
+ if (ssa_ops [idx ].op1_def >= 0 ) {
1945
+ ssa_vars [ssa_ops [idx ].op1_def ].alias = zend_jit_var_may_alias (op_array , ssa , EX_VAR_TO_NUM (opline -> op1 .var ));
1946
+ }
1947
+ if (ssa_ops [idx ].op2_def >= 0 ) {
1948
+ ssa_vars [ssa_ops [idx ].op2_def ].alias = zend_jit_var_may_alias (op_array , ssa , EX_VAR_TO_NUM (opline -> op2 .var ));
1949
+ }
1950
+ if (ssa_ops [idx ].result_def >= 0 ) {
1951
+ ssa_vars [ssa_ops [idx ].result_def ].alias = zend_jit_var_may_alias (op_array , ssa , EX_VAR_TO_NUM (opline -> result .var ));
1952
+ }
1943
1953
}
1944
1954
if (opline -> opcode == ZEND_RECV_INIT
1945
1955
&& !(op_array -> fn_flags & ZEND_ACC_HAS_TYPE_HINTS )) {
@@ -2001,19 +2011,22 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
2001
2011
if (ssa -> var_info
2002
2012
&& zend_jit_trace_copy_ssa_var_info (op_array , ssa , ssa_opcodes , tssa , v )) {
2003
2013
/* pass */
2004
- } else if (op_array -> arg_info ) {
2005
- zend_arg_info * arg_info = & op_array -> arg_info [i ];
2006
- zend_class_entry * ce ;
2007
- uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
2014
+ } else {
2015
+ ssa_vars [v ].alias = zend_jit_var_may_alias (op_array , ssa , i );
2016
+ if (op_array -> arg_info ) {
2017
+ zend_arg_info * arg_info = & op_array -> arg_info [i ];
2018
+ zend_class_entry * ce ;
2019
+ uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
2008
2020
2009
- if (ZEND_ARG_SEND_MODE (arg_info )) {
2010
- tmp |= MAY_BE_REF ;
2021
+ if (ZEND_ARG_SEND_MODE (arg_info )) {
2022
+ tmp |= MAY_BE_REF ;
2023
+ }
2024
+ ssa_var_info [v ].type = tmp ;
2025
+ ssa_var_info [v ].ce = ce ;
2026
+ ssa_var_info [v ].is_instanceof = 1 ;
2027
+ } else {
2028
+ 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 ;
2011
2029
}
2012
- ssa_var_info [v ].type = tmp ;
2013
- ssa_var_info [v ].ce = ce ;
2014
- ssa_var_info [v ].is_instanceof = 1 ;
2015
- } else {
2016
- 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 ;
2017
2030
}
2018
2031
} else {
2019
2032
if (ssa -> vars ) {
0 commit comments