@@ -1078,7 +1078,7 @@ static void zend_dfa_optimize_send_copies(zend_op_array *op_array, zend_ssa *ssa
1078
1078
}
1079
1079
1080
1080
for (uint32_t i = 0 ; i < op_array -> last ; i ++ ) {
1081
- const zend_op * opline = & op_array -> opcodes [ i ] ;
1081
+ zend_op * opline = op_array -> opcodes + i ;
1082
1082
if ((opline -> opcode != ZEND_SEND_VAR && opline -> opcode != ZEND_SEND_VAR_EX ) || opline -> op2_type != IS_UNUSED || opline -> op1_type != IS_CV ) {
1083
1083
continue ;
1084
1084
}
@@ -1105,14 +1105,11 @@ static void zend_dfa_optimize_send_copies(zend_op_array *op_array, zend_ssa *ssa
1105
1105
continue ;
1106
1106
}
1107
1107
1108
- zend_ssa_var * ssa_var = & ssa -> vars [ op1_def ] ;
1108
+ zend_ssa_var * ssa_var = ssa -> vars + op1_def ;
1109
1109
1110
- /* If the variable's value does not matter, it does not alias, but it is used;
1111
- * then it means its use will override the value and we can perform the implicit move optimization. */
1112
- if (ssa_var -> no_val && !ssa_var -> alias /* && ssa_var->use_chain >= 0*/ ) {
1110
+ if (ssa_var -> no_val && !ssa_var -> alias ) {
1113
1111
/* Flag will be used by VM type spec handler */
1114
- op_array -> opcodes [i ].extended_value = 1 ;
1115
- //fprintf(stderr, "optimized\n");
1112
+ opline -> extended_value = 1 ;
1116
1113
} else if (opline -> opcode == ZEND_SEND_VAR ) {
1117
1114
zend_ssa_replace_op1_def_op1_use (ssa , ssa_op );
1118
1115
}
@@ -1137,6 +1134,14 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
1137
1134
ssa_verify_integrity (op_array , ssa , "before dfa" );
1138
1135
#endif
1139
1136
1137
+ /* Optimization should not be done on main because of globals. */
1138
+ if (op_array -> function_name ) {
1139
+ zend_dfa_optimize_send_copies (op_array , ssa );
1140
+ #if ZEND_DEBUG_DFA
1141
+ ssa_verify_integrity (op_array , ssa , "after optimize send copies" );
1142
+ #endif
1143
+ }
1144
+
1140
1145
if (ZEND_OPTIMIZER_PASS_8 & ctx -> optimization_level ) {
1141
1146
if (sccp_optimize_op_array (ctx , op_array , ssa , call_map )) {
1142
1147
remove_nops = 1 ;
@@ -1177,14 +1182,6 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
1177
1182
#endif
1178
1183
}
1179
1184
1180
- /* Optimization should not be done on main because of globals. */
1181
- if (op_array -> function_name ) {
1182
- zend_dfa_optimize_send_copies (op_array , ssa );
1183
- #if ZEND_DEBUG_DFA
1184
- ssa_verify_integrity (op_array , ssa , "after optimize send copies" );
1185
- #endif
1186
- }
1187
-
1188
1185
for (v = op_array -> last_var ; v < ssa -> vars_count ; v ++ ) {
1189
1186
1190
1187
op_1 = ssa -> vars [v ].definition ;
0 commit comments