Skip to content

AOT differential sweep: 27 of 53 cases fail on master (half the least-covered path is untested-broken) #23779

Description

@PurHur

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');
zend: s1 s2
aot :

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions