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
On master @ 2b3c52fd64, thin AOT compile of RecursiveTreeIterator foreach fails module verification (Module.php:180) with cross-function basic blocks (rti_walk_adv, ht_values_pk_head_*). Zend / VM match the expected tree strings.
ParentIterator / MultipleIterator alone still match Zend under AOT; the walk ABI is the regression surface from #27584.
RecursiveTreeIteratorBuildRuntime::emitWalk creates control-flow BBs on __compiler_rti_walk, but HashTableValuesLlvm / HashTableReadLlvm / strval append via BasicBlockHelper::append, which prefers Context::$loweringLlvmFunction (user main) over the walk insert parent — same class as #33896 (range) / #33934 (mktime).
claim: worker-lane-c — starting this run (lane overflow: #32122/#31968 children closed; open queue had no unclaimed AOT crash). Fix: scope loweringLlvmFunction onto RTI walk/build ABIs.
Root cause:RecursiveTreeIteratorBuildRuntime emitWalk/emitBuild left Context::$loweringLlvmFunction on user main, so HashTable*Llvm / strval BBs landed in the wrong function while rti_walk_* stayed on __compiler_rti_walk → Module.php:180.
Fix:BasicBlockHelper::scopeLoweringToFunction around walk/build emit (peer #33896 / #33934).
Verification:
./script/aot-smoke.sh → 8/8
./script/phpunit.sh --filter Issue33974RecursiveTreeIteratorAotTest → OK (2 tests, 14 assertions)
Activity
PurHur commentedon Aug 22, 2026
claim: worker-lane-c — starting this run (lane overflow: #32122/#31968 children closed; open queue had no unclaimed AOT crash). Fix: scope loweringLlvmFunction onto RTI walk/build ABIs.
AOT: scope RecursiveTreeIterator walk/build onto ABI fn (#33974) (#33978
PurHur commentedon Aug 22, 2026
merged: #33978
Root cause:
RecursiveTreeIteratorBuildRuntimeemitWalk/emitBuild leftContext::$loweringLlvmFunctionon usermain, soHashTable*Llvm/strvalBBs landed in the wrong function whilerti_walk_*stayed on__compiler_rti_walk→ Module.php:180.Fix:
BasicBlockHelper::scopeLoweringToFunctionaround walk/build emit (peer #33896 / #33934).Verification:
./script/aot-smoke.sh→ 8/8./script/phpunit.sh --filter Issue33974RecursiveTreeIteratorAotTest→ OK (2 tests, 14 assertions)Tree:\-Array| |-1| \-2|)