[php-src] PR #25136: opcache: preserve cv values across jit assignments and cse

From: Date: Sun, 01 Nov 2026 19:46:53 +0000
Subject: [php-src] PR #25136: opcache: preserve cv values across jit assignments and cse
Groups: php.git-pulls 
Request: Send a blank email to git-pulls+get-40198@lists.php.net to get a copy of this message
Pull Request: https://github.com/php/php-src/pull/25136 Author: aasul this fixes the A and C tracing jit failures from GH-24683. for A, assignment handling can create redundant copies of identical typed constants that end up overwriting a live cv value before a trace guard or side exit. for C, a reusable expression can remain bound to a cv spill slot even after that cv has been assigned a different value. later cse reuse can then corrupt the observable state. the changes preserve the constant identity where appropriate, separate reusable expression values from their cv assignments, and safely share spill storage when the optimized live ranges allow it. i've included regression tests for the original failures, floating-point cse, and spill-frame pressure. @ChrisOrlando independently tested A+C on an apple m1 against php 8.5.12. A went from 9 wrong results to 0, and C went from 939 wrong results to 0. the larger workload also matched the jit-off result. B is handled separately in #25085. the combined A+C+B patches fix all three original reproductions. refs GH-24683.

« previous php.git-pulls (#40198) next »