Summary
script/differential-sweep.sh --aot fails 27 of 53 cases on master at 544d1dca9. The VM
backend passes 53/53 on the same cases. AGENTS.md §3 calls AOT "the least-covered path"; this
quantifies it.
Measured in php-compiler:22.04-dev, LLVM 9. Nobody appears to have run the full AOT sweep
recently — it was found while baselining an unrelated change, and every one of the 27 reproduces on
an untouched master checkout.
Breakdown
19 wrong-output (DIFF) — these run to completion and print the wrong thing, the exact class
AGENTS.md §3 warns the compliance suite cannot catch:
c04_concat c10_builtin c11_strcmp d04_concat_dim e01_var_export e02_in_array
e03_array_merge e05_sprintf e06_byref e09_nested_calls e13_isset e15_str_fns
e17_array_pad e24_compare e29_var_dump_indent g01_var_dump g02_print_r
g03_exception_caught g05_float_render
8 compile failures (COMPILE):
c07_method e04_usort e07_named e08_spread e16_array_slice e20_closure
e23_implode g04_exception_state
Samples
c04_concat.php — concatenated arguments vanish entirely:
<?php
function f($a,$b){ echo "$a $b\n"; }
$s='s'; f($s.'1',$s.'2');
Another case returns a float where Zend returns a string:
zend: zw!~string(2) "zw"
aot : ~float(0)
Why this matters
g01, g02, g03, g05 are the regression guards added in #23754 for the AOT fixes
(#23540, #23641, #23471/#23472/#23482). They pass under VM and fail under AOT, so the defects
those issues closed are still reproducible on the AOT path. Worth re-checking whether those
issues should be reopened, or whether the guards need AOT-specific expectations.
The concat/string cluster (c04, c11, d04, e15, e23) looks like it could share one root
cause, so this may be far fewer than 27 distinct bugs.
Repro
script/differential-sweep.sh --aot --dir test/differential/cases
# AOT_SWEEP_EXIT=27 (exit status = mismatch count)
Summary
script/differential-sweep.sh --aotfails 27 of 53 cases on master at544d1dca9. The VMbackend passes 53/53 on the same cases. AGENTS.md §3 calls AOT "the least-covered path"; this
quantifies it.
Measured in
php-compiler:22.04-dev, LLVM 9. Nobody appears to have run the full AOT sweeprecently — it was found while baselining an unrelated change, and every one of the 27 reproduces on
an untouched master checkout.
Breakdown
19 wrong-output (
DIFF) — these run to completion and print the wrong thing, the exact classAGENTS.md §3 warns the compliance suite cannot catch:
8 compile failures (
COMPILE):Samples
c04_concat.php— concatenated arguments vanish entirely:Another case returns a float where Zend returns a string:
Why this matters
g01,g02,g03,g05are the regression guards added in #23754 for the AOT fixes(#23540, #23641, #23471/#23472/#23482). They pass under VM and fail under AOT, so the defects
those issues closed are still reproducible on the AOT path. Worth re-checking whether those
issues should be reopened, or whether the guards need AOT-specific expectations.
The concat/string cluster (
c04,c11,d04,e15,e23) looks like it could share one rootcause, so this may be far fewer than 27 distinct bugs.
Repro
script/differential-sweep.sh --aot --dir test/differential/cases # AOT_SWEEP_EXIT=27 (exit status = mismatch count)