You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CI: master is unbuildable both from a clean checkout and on already-patched trees — the #36250 guard demands exactly one replaceVariablesByCfgWalk (a correctly patched file has two) and the pass-manager patch no longer lands on old trees, so every AOT build dies in the new light-opt step (script/apply-patches.sh, patches/php-cfg-simplifier-use-chain.patch, patches/php-llvm-module-createfunctionpassmanager.patch) (re-#36250, re-#36213, re-#36229) #36377
php-cfg-simplifier-use-chain: expected exactly one replaceVariablesByCfgWalk
apply-patches rc=1
Pristine Simplifier.php contains 0 occurrences; git apply --check -p0 patches/php-cfg-simplifier-use-chain.patch applies cleanly and leaves 2 (the definition and its call). The guard added by the #36250 fix (6a…, "fix Simplifier use-chain guard for July-5 partial trees") encodes the July-5 partial state, not the correct end state, so every fresh tree — including every GitHub Actions run — fails in setup. Compiler gate and Bootstrap spine gate: 0 green runs on master in the last 60; the last 30 failures all die in apply-patches.sh.
Already-patched tree (the maintainer's, patched 2026-09-01):apply-patches.sh → ERROR: failed to apply php-llvm-module-createfunctionpassmanager.patch (the #36213 PR rewrote the patch to bind LLVMCreateFunctionPassManagerForModule, but the vendored Module.php:113 still calls the non-existent LLVMCreatePassManagerForModule), and because #36213 made the light pass pipeline default, every phpc build now dies:
So the two populations of trees are broken in two different ways by two different wave-1 PRs, and dev-verify-fast/aot-smoke on the authors' boxes were green only because their vendor happened to be in a third state. This is exactly the failure #36229 (open, unclaimed) describes; each per-patch fix has produced the next breakage (#36143 → #36209 → #36250 → this).
PHP implementation target
Immediate (S): guard = "file matches the patch's post-image" (git apply --check -R succeeds), never a marker count; verify both from pristine (patches/pristine-snapshots/) and from the current post-image. Run apply-patches.sh --verify-pristine on all patches in CI setup, not two.
lib/JIT/Context.php::runLightModuleOptimizationPasses must not assume the vendor binding exists: check method_exists($lib, 'LLVMCreateFunctionPassManagerForModule') and fail with a message naming the patch, or fall back to the module pass manager.
Category
Regression:· the patch mechanism, third distinct master breakage in 36 h · child of #36188Problem (master
1edb103c34, 2026-09-02, pinned image)Clean checkout:
rm -rf vendor && composer install --ignore-platform-reqs && script/apply-patches.sh→Pristine
Simplifier.phpcontains 0 occurrences;git apply --check -p0 patches/php-cfg-simplifier-use-chain.patchapplies cleanly and leaves 2 (the definition and its call). The guard added by the #36250 fix (6a…, "fix Simplifier use-chain guard for July-5 partial trees") encodes the July-5 partial state, not the correct end state, so every fresh tree — including every GitHub Actions run — fails in setup. Compiler gate and Bootstrap spine gate: 0 green runs on master in the last 60; the last 30 failures all die inapply-patches.sh.Already-patched tree (the maintainer's, patched 2026-09-01):
apply-patches.sh→ERROR: failed to apply php-llvm-module-createfunctionpassmanager.patch(the #36213 PR rewrote the patch to bindLLVMCreateFunctionPassManagerForModule, but the vendoredModule.php:113still calls the non-existentLLVMCreatePassManagerForModule), and because #36213 made the light pass pipeline default, everyphpc buildnow dies:So the two populations of trees are broken in two different ways by two different wave-1 PRs, and
dev-verify-fast/aot-smokeon the authors' boxes were green only because their vendor happened to be in a third state. This is exactly the failure #36229 (open, unclaimed) describes; each per-patch fix has produced the next breakage (#36143 → #36209 → #36250 → this).PHP implementation target
git apply --check -Rsucceeds), never a marker count; verify both from pristine (patches/pristine-snapshots/) and from the current post-image. Runapply-patches.sh --verify-pristineon all patches in CI setup, not two.lib/JIT/Context.php::runLightModuleOptimizationPassesmust not assume the vendor binding exists: checkmethod_exists($lib, 'LLVMCreateFunctionPassManagerForModule')and fail with a message naming the patch, or fall back to the module pass manager.PurHur/*and consume tags; delete the overlay machinery. Until that lands, the CONTRIBUTING rule for every PR touchingpatches/: prove with a freshcomposer installin the pinned image, and paste theapply-patches.sh --verify-pristineoutput.Repro
Done when
script/aot-smoke.shis 9/9 on the resulting tree and on a tree patched before 2026-09-01apply-patches.sh --verify-pristinecovers every patch; the guard-by-count is gone