summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-04-03 03:09:03 +0300
committerDmitry Stogov <dmitry@zend.com>2019-04-03 03:09:03 +0300
commit56a5d0bd9179972d0675f8f772fc5423d9de00d0 (patch)
tree506d55ff7c6cba131c967cd31b09f34dad4c2737
parentf7755163b7b8409c9265b1cc137e20c4e0ae5d8b (diff)
downloadphp-git-56a5d0bd9179972d0675f8f772fc5423d9de00d0.tar.gz
Fixed CFG construction for SWITCH opcodes
-rw-r--r--ext/opcache/Optimizer/zend_cfg.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/opcache/Optimizer/zend_cfg.c b/ext/opcache/Optimizer/zend_cfg.c
index e3f60452ef..a74d55e82e 100644
--- a/ext/opcache/Optimizer/zend_cfg.c
+++ b/ext/opcache/Optimizer/zend_cfg.c
@@ -74,8 +74,8 @@ static void zend_mark_reachable(zend_op *opcodes, zend_cfg *cfg, zend_basic_bloc
}
} else {
ZEND_ASSERT(opcode == ZEND_SWITCH_LONG || opcode == ZEND_SWITCH_STRING);
- if (i == b->successors_count) {
- succ->flags |= ZEND_BB_FOLLOW;
+ if (i == b->successors_count - 1) {
+ succ->flags |= ZEND_BB_FOLLOW | ZEND_BB_TARGET;
} else {
succ->flags |= ZEND_BB_TARGET;
}