Skip to content

Commit 1354b04

Browse files
committed
Cleanup and fix condition
1 parent 4f5aed5 commit 1354b04

File tree

4 files changed

+19
-23
lines changed

4 files changed

+19
-23
lines changed

Zend/Optimizer/dfa_pass.c

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -467,14 +467,9 @@ int zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa)
467467
zend_ssa_var *var = ssa->vars + var_num;
468468

469469
if (ssa_op->op1_def >= 0) {
470-
/* TODO: move to somewhere common */
471-
int op1_new = ssa_op->op1_use;
472-
/* zend_ssa_rename_var_uses() clear use_chain & phi_use_chain for us */
473-
zend_ssa_rename_var_uses(ssa, ssa_op->op1_def, op1_new, true);
474-
ssa->vars[ssa_op->op1_def].definition = -1;
475-
ssa_op->op1_def = -1;
470+
zend_ssa_replace_op1_def_op1_use(ssa, ssa_op);
476471
}
477-
//ZEND_ASSERT(ssa_op->op1_def < 0);
472+
478473
zend_ssa_unlink_use_chain(ssa, op_num, ssa_op->op1_use);
479474
ssa_op->op1_use = -1;
480475
ssa_op->op1_use_chain = -1;
@@ -1088,13 +1083,13 @@ static void zend_dfa_optimize_send_copies(zend_op_array *op_array, zend_ssa *ssa
10881083
continue;
10891084
}
10901085

1091-
zend_ssa_op *this_ssa_op = ssa->ops + i;
1092-
int op1_def = this_ssa_op->op1_def;
1086+
zend_ssa_op *ssa_op = ssa->ops + i;
1087+
int op1_def = ssa_op->op1_def;
10931088
if (op1_def == -1) {
10941089
continue;
10951090
}
10961091

1097-
int ssa_cv = this_ssa_op->op1_use;
1092+
int ssa_cv = ssa_op->op1_use;
10981093

10991094
#if 0
11001095
/* Argument move must not be observable in backtraces */
@@ -1118,13 +1113,8 @@ static void zend_dfa_optimize_send_copies(zend_op_array *op_array, zend_ssa *ssa
11181113
/* Flag will be used by VM type spec handler */
11191114
op_array->opcodes[i].extended_value = 1;
11201115
//fprintf(stderr, "optimized\n");
1121-
} else {
1122-
/* TODO: move to somewhere common */
1123-
int op1_new = this_ssa_op->op1_use;
1124-
/* zend_ssa_rename_var_uses() clear use_chain & phi_use_chain for us */
1125-
zend_ssa_rename_var_uses(ssa, this_ssa_op->op1_def, op1_new, true);
1126-
ssa->vars[this_ssa_op->op1_def].definition = -1;
1127-
this_ssa_op->op1_def = -1;
1116+
} else if (opline->opcode == ZEND_SEND_VAR) {
1117+
zend_ssa_replace_op1_def_op1_use(ssa, ssa_op);
11281118
}
11291119
}
11301120
}

Zend/Optimizer/sccp.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2045,13 +2045,8 @@ static int remove_call(sccp_ctx *ctx, zend_op *opline, zend_ssa_op *ssa_op)
20452045
zend_op *op = call->arg_info[i].opline;
20462046
zend_ssa_op *this_ssa_op = &ssa->ops[op - op_array->opcodes];
20472047

2048-
/* TODO: move this code to somewhere common */
20492048
if (op->opcode == ZEND_SEND_VAR && this_ssa_op->op1_def >= 0) {
2050-
int op1_new = this_ssa_op->op1_use;
2051-
/* zend_ssa_rename_var_uses() clear use_chain & phi_use_chain for us */
2052-
zend_ssa_rename_var_uses(ssa, this_ssa_op->op1_def, op1_new, true);
2053-
ssa->vars[this_ssa_op->op1_def].definition = -1;
2054-
this_ssa_op->op1_def = -1;
2049+
zend_ssa_replace_op1_def_op1_use(ssa, this_ssa_op);
20552050
}
20562051

20572052
zend_ssa_remove_instr(ssa, op, this_ssa_op);

Zend/Optimizer/zend_ssa.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,3 +1680,13 @@ void zend_ssa_rename_var_uses(zend_ssa *ssa, int old, int new, bool update_types
16801680
old_var->phi_use_chain = NULL;
16811681
}
16821682
/* }}} */
1683+
1684+
void zend_ssa_replace_op1_def_op1_use(zend_ssa *ssa, zend_ssa_op *ssa_op)
1685+
{
1686+
int op1_new = ssa_op->op1_use;
1687+
ZEND_ASSERT(op1_new >= 0);
1688+
ZEND_ASSERT(ssa_op->op1_def >= 0);
1689+
/* zend_ssa_rename_var_uses() clear use_chain & phi_use_chain for us */
1690+
zend_ssa_rename_var_uses(ssa, ssa_op->op1_def, op1_new, true);
1691+
zend_ssa_remove_op1_def(ssa, ssa_op);
1692+
}

Zend/Optimizer/zend_ssa.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ void zend_ssa_remove_uses_of_var(zend_ssa *ssa, int var_num);
159159
void zend_ssa_remove_block(zend_op_array *op_array, zend_ssa *ssa, int b);
160160
void zend_ssa_rename_var_uses(zend_ssa *ssa, int old_var, int new_var, bool update_types);
161161
void zend_ssa_remove_block_from_cfg(zend_ssa *ssa, int b);
162+
void zend_ssa_replace_op1_def_op1_use(zend_ssa *ssa, zend_ssa_op *ssa_op);
162163

163164
static zend_always_inline void _zend_ssa_remove_def(zend_ssa_var *var)
164165
{

0 commit comments

Comments
 (0)