summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2020-09-28 23:54:28 +0300
committerDmitry Stogov <dmitry@zend.com>2020-09-28 23:54:28 +0300
commitf722512c4ad02cb0696ea8ea776aef5a709dcdbb (patch)
treec67748ef09b36b28bcb495dd20f6223da312b6ea
parent7553c696c306d48499c71e4f165b0c93699c7b4a (diff)
downloadphp-git-f722512c4ad02cb0696ea8ea776aef5a709dcdbb.tar.gz
Move invariant type guard out of loop
-rw-r--r--ext/opcache/jit/zend_jit_trace.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c
index 102d6a52f6..8057e8131b 100644
--- a/ext/opcache/jit/zend_jit_trace.c
+++ b/ext/opcache/jit/zend_jit_trace.c
@@ -2005,7 +2005,8 @@ propagate_arg:
ssa_var_info[phi->ssa_var].type = t & ~MAY_BE_GUARD;
}
} else if ((t1 & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) == (t & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF))) {
- if (!(t1 & MAY_BE_GUARD)) {
+ if (!(t1 & MAY_BE_GUARD)
+ || is_checked_guard(tssa, ssa_opcodes, phi->sources[1], phi->ssa_var)) {
ssa_var_info[phi->ssa_var].type = t & ~MAY_BE_GUARD;
ssa_var_info[phi->sources[0]].type = t | MAY_BE_GUARD;
}