Skip to content

Commit 4872d13

Browse files
committed
Replace conditions, that should be always true, by ZEND_ASSERT()
1 parent 9915b1f commit 4872d13

File tree

4 files changed

+43
-41
lines changed

4 files changed

+43
-41
lines changed

ext/opcache/Optimizer/sccp.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,13 +1192,14 @@ static void sccp_visit_phi(scdf_ctx *scdf, zend_ssa_phi *phi) {
11921192
MAKE_TOP(&result);
11931193
SCP_DEBUG("Handling PHI(");
11941194
if (phi->pi >= 0) {
1195-
if (phi->sources[0] >= 0 && scdf_is_edge_feasible(scdf, phi->pi, phi->block)) {
1195+
ZEND_ASSERT(phi->sources[0] >= 0);
1196+
if (scdf_is_edge_feasible(scdf, phi->pi, phi->block)) {
11961197
join_phi_values(&result, &ctx->values[phi->sources[0]]);
11971198
}
11981199
} else {
11991200
for (i = 0; i < block->predecessors_count; i++) {
1200-
if (phi->sources[i] >= 0
1201-
&& scdf_is_edge_feasible(scdf, predecessors[i], phi->block)) {
1201+
ZEND_ASSERT(phi->sources[i] >= 0);
1202+
if (scdf_is_edge_feasible(scdf, predecessors[i], phi->block)) {
12021203
SCP_DEBUG("val, ");
12031204
join_phi_values(&result, &ctx->values[phi->sources[i]]);
12041205
} else {

ext/opcache/Optimizer/zend_inference.c

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,8 @@ int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ss
282282
}
283283
} else {
284284
for (j = 0; j < ssa->cfg.blocks[p->block].predecessors_count; j++) {
285-
if (p->sources[j] >= 0 && ssa->vars[p->sources[j]].no_val) {
285+
ZEND_ASSERT(p->sources[j] >= 0);
286+
if (ssa->vars[p->sources[j]].no_val) {
286287
ssa_vars[p->sources[j]].no_val = 0; /* used indirectly */
287288
zend_bitset_incl(worklist, p->sources[j]);
288289
}
@@ -854,7 +855,8 @@ int zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *ssa, int
854855
}
855856
} else {
856857
for (i = 0; i < ssa->cfg.blocks[p->block].predecessors_count; i++) {
857-
if (p->sources[i] >= 0 && ssa->var_info[p->sources[i]].has_range) {
858+
ZEND_ASSERT(p->sources[i] >= 0);
859+
if (ssa->var_info[p->sources[i]].has_range) {
858860
/* union */
859861
tmp->underflow |= ssa->var_info[p->sources[i]].range.underflow;
860862
tmp->min = MIN(tmp->min, ssa->var_info[p->sources[i]].range.min);
@@ -3328,17 +3330,18 @@ int zend_infer_types_ex(const zend_op_array *op_array, const zend_script *script
33283330
}
33293331
UPDATE_SSA_TYPE(tmp, j);
33303332
for (i = 0; i < blocks[p->block].predecessors_count; i++) {
3331-
if (p->sources[i] >= 0) {
3332-
zend_ssa_var_info *info = &ssa_var_info[p->sources[i]];
3333-
if (info->type & MAY_BE_OBJECT) {
3334-
if (first) {
3335-
ce = info->ce;
3336-
is_instanceof = info->is_instanceof;
3337-
first = 0;
3338-
} else {
3339-
is_instanceof |= info->is_instanceof;
3340-
ce = join_class_entries(ce, info->ce, &is_instanceof);
3341-
}
3333+
zend_ssa_var_info *info;
3334+
3335+
ZEND_ASSERT(p->sources[i] >= 0);
3336+
info = &ssa_var_info[p->sources[i]];
3337+
if (info->type & MAY_BE_OBJECT) {
3338+
if (first) {
3339+
ce = info->ce;
3340+
is_instanceof = info->is_instanceof;
3341+
first = 0;
3342+
} else {
3343+
is_instanceof |= info->is_instanceof;
3344+
ce = join_class_entries(ce, info->ce, &is_instanceof);
33423345
}
33433346
}
33443347
}

ext/opcache/Optimizer/zend_ssa.c

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,15 +1061,16 @@ int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_
10611061
ssa_vars[phi->ssa_var].var = phi->var;
10621062
ssa_vars[phi->ssa_var].definition_phi = phi;
10631063
if (phi->pi >= 0) {
1064-
if (phi->sources[0] >= 0) {
1065-
zend_ssa_phi *p = ssa_vars[phi->sources[0]].phi_use_chain;
1066-
while (p && p != phi) {
1067-
p = zend_ssa_next_use_phi(ssa, phi->sources[0], p);
1068-
}
1069-
if (!p) {
1070-
phi->use_chains[0] = ssa_vars[phi->sources[0]].phi_use_chain;
1071-
ssa_vars[phi->sources[0]].phi_use_chain = phi;
1072-
}
1064+
zend_ssa_phi *p;
1065+
1066+
ZEND_ASSERT(phi->sources[0] >= 0);
1067+
p = ssa_vars[phi->sources[0]].phi_use_chain;
1068+
while (p && p != phi) {
1069+
p = zend_ssa_next_use_phi(ssa, phi->sources[0], p);
1070+
}
1071+
if (!p) {
1072+
phi->use_chains[0] = ssa_vars[phi->sources[0]].phi_use_chain;
1073+
ssa_vars[phi->sources[0]].phi_use_chain = phi;
10731074
}
10741075
if (phi->has_range_constraint) {
10751076
/* min and max variables can't be used together */
@@ -1086,15 +1087,16 @@ int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_
10861087
int j;
10871088

10881089
for (j = 0; j < ssa->cfg.blocks[i].predecessors_count; j++) {
1089-
if (phi->sources[j] >= 0) {
1090-
zend_ssa_phi *p = ssa_vars[phi->sources[j]].phi_use_chain;
1091-
while (p && p != phi) {
1092-
p = zend_ssa_next_use_phi(ssa, phi->sources[j], p);
1093-
}
1094-
if (!p) {
1095-
phi->use_chains[j] = ssa_vars[phi->sources[j]].phi_use_chain;
1096-
ssa_vars[phi->sources[j]].phi_use_chain = phi;
1097-
}
1090+
zend_ssa_phi *p;
1091+
1092+
ZEND_ASSERT(phi->sources[j] >= 0);
1093+
p = ssa_vars[phi->sources[j]].phi_use_chain;
1094+
while (p && p != phi) {
1095+
p = zend_ssa_next_use_phi(ssa, phi->sources[j], p);
1096+
}
1097+
if (!p) {
1098+
phi->use_chains[j] = ssa_vars[phi->sources[j]].phi_use_chain;
1099+
ssa_vars[phi->sources[j]].phi_use_chain = phi;
10981100
}
10991101
}
11001102
}
@@ -1315,9 +1317,6 @@ void zend_ssa_remove_uses_of_var(zend_ssa *ssa, int var_num) /* {{{ */
13151317
int i, end = NUM_PHI_SOURCES(phi);
13161318
for (i = 0; i < end; i++) {
13171319
if (phi->sources[i] == var_num) {
1318-
#if 0
1319-
phi->sources[i] = -1;
1320-
#endif
13211320
phi->use_chains[i] = NULL;
13221321
}
13231322
}
@@ -1395,9 +1394,8 @@ void zend_ssa_remove_block(zend_op_array *op_array, zend_ssa *ssa, int i) /* {{{
13951394
zend_ssa_remove_phi(ssa, phi);
13961395
}
13971396
} else {
1398-
if (phi->sources[pred_offset] >= 0) {
1399-
zend_ssa_remove_phi_source(ssa, phi, pred_offset, next_block->predecessors_count);
1400-
}
1397+
ZEND_ASSERT(phi->sources[pred_offset] >= 0);
1398+
zend_ssa_remove_phi_source(ssa, phi, pred_offset, next_block->predecessors_count);
14011399
}
14021400
}
14031401

ext/opcache/Optimizer/zend_ssa.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ static zend_always_inline zend_bool zend_ssa_is_no_val_use(const zend_op *opline
240240
zend_ssa_phi *_phi = (phi); \
241241
int _i, _end = NUM_PHI_SOURCES(phi); \
242242
for (_i = 0; _i < _end; _i++) { \
243-
if (_phi->sources[_i] < 0) continue; \
243+
ZEND_ASSERT(_phi->sources[_i] >= 0); \
244244
source = _phi->sources[_i];
245245
#define FOREACH_PHI_SOURCE_END() \
246246
} \

0 commit comments

Comments
 (0)