Commit f52903dd035 for php
commit f52903dd035fdb9be6381275800aba712d560bb9
Merge: dbc7e01dea4 65f37bbb18a
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date: Wed Nov 4 16:37:47 2026 -0500
Merge branch 'PHP-8.5' into PHP-8.6
* PHP-8.5:
ext/opcache: Fix GH-25164 loop liveness across calls
# Conflicts:
# ext/opcache/jit/zend_jit.c
# ext/opcache/jit/zend_jit_ir.c
diff --cc NEWS
index d04ed034619,8ccb5907789..1f255dff531
--- a/NEWS
+++ b/NEWS
@@@ -6,15 -6,34 +6,17 @@@ PH
. Fixed curl_reset() retaining CURLOPT_PRIVATE after reset. (lacatoire)
- Opcache:
+ . Fixed bug GH-22216 (spurious opcache.memory_consumption warning on each new
+ ZTS thread; the directive is also reported as 0 in worker threads).
+ (Daisuke Komazaki)
. Fixed bug GH-25165 (Tracing JIT loops forever once opcache.jit_buffer_size
is exhausted while compiling side traces). (Ilia Alshanetsky)
+ . Fixed bug GH-25164 (Function JIT loop calling a user function runs once
+ or never terminates). (Ilia Alshanetsky)
-19 Nov 2026, PHP 8.5.13
+05 Nov 2026, PHP 8.6.0RC5
- Core:
- . Fixed bug GH-24184 (System ID not being reinitialized after an Apache
- graceful restart, potentially causing incompatible OPcache file cache
- entries to be reused). (Levi Morrison)
- . Fixed memory leak when an exception already contains the pending exception
- in its previous chain. (Edmond)
- . Fixed bug GH-23979 (Nullsafe operator must not flush delayed oplines of an
- enclosing function). (ndossche)
- . Fixed memory manager keeping a block reallocated to exactly the size of
- the next smaller bin in its larger bin, which efree_size() then freed
- into the wrong one. (Marc Bennewitz)
- . Fixed bug GH-24081 (User opcode handlers resume execution against a stale
- frame under ZEND_VM_KIND_TAILCALL). (devnexen)
- . Fixed bug GH-24218 (Invalid opcode for count() of a literal array
- without SCCP). (lazerg)
- . Fix throwing behaviour with recursive arrays in VM. (ndossche)
- . Fixed skipped catch block when switching fibers during exception unwinding
- (Nicolas Grekas)
- . Fix escape analysis for objects implementing ArrayAccess. (ndossche, Arnaud)
- . Fix UAF for resolved callable zval. (EdmondDantes)
- . Fix memory leak for nested HTTP calls. (EdmondDantes)
. Fix function and constant imports in compile_to_ast and add support
for grouping. (Klaas Skelte van der Werf)
. Fixed bug GH-24668 (zend_set_local_var() leaks the previous value of an
diff --cc ext/opcache/jit/zend_jit.c
index 28e6f1e8217,1490c43e5b7..ff40b1380a6
--- a/ext/opcache/jit/zend_jit.c
+++ b/ext/opcache/jit/zend_jit.c
@@@ -1198,8 -1197,8 +1198,9 @@@ static void zend_jit_allocate_registers
ra[src].flags |= ZREG_STORE;
}
} else {
- int need_move = 0;
+ /* The VM may enter an ENTRY block, so its Phi sources must go through memory */
+ int need_move = (ssa->cfg.blocks[phi->block].flags & (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY)) != 0;
+ uint32_t k;
for (k = 0; k < ssa->cfg.blocks[phi->block].predecessors_count; k++) {
src = phi->sources[k];
diff --cc ext/opcache/jit/zend_jit_ir.c
index 266f36269bd,ffe50d08b1e..7f375e04d13
--- a/ext/opcache/jit/zend_jit_ir.c
+++ b/ext/opcache/jit/zend_jit_ir.c
@@@ -17881,12 -17812,11 +17881,13 @@@ static bool zend_jit_may_be_in_reg(cons
}
if (JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE) {
- int def_block, use_block, b, use, j;
+ uint32_t def_block, use_block;
+ int b, use;
+ uint32_t j;
zend_basic_block *bb;
zend_ssa_phi *p;
- bool ret = 1;
- bool def_is_pi = 0;
+ bool ret = true;
++ bool def_is_pi = false;
zend_worklist worklist;
ALLOCA_FLAG(use_heap)