Category
bug · php-src-strict · ext/standard/password · user-script AOT · pillar 4
Problem
password_hash(..., PASSWORD_ARGON2ID, [...]) compiles and runs on VM/JIT (matches Zend) but AOT aborts at LLVM module verify with a dominance error on the options-cost phi. Probed 2026-08-02 @ b5715a3e2.
| Repro |
Zend 8.2+ / VM / JIT |
AOT (2026-08-02) |
password_hash('secret', PASSWORD_ARGON2ID, memory_cost=8,time_cost=1,threads=1) + verify |
ok / ok |
build: Instruction does not dominate all uses! on %pw_cost_* phi (Module->verify) |
Open Reflection-only siblings (#24827, #25479) do not cover this AOT IR bug.
php-src reference
PHP implementation target
ext/standard / lib/JIT password_hash options lowering for AOT (cost/time/threads phi wiring)
- PHP-in-PHP; no new
runtime/*.c
Repro
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
cat > /tmp/pw.php <<'"'"'PHP'"'"'
<?php
$hash = password_hash("secret", PASSWORD_ARGON2ID, [
"memory_cost" => 8, "time_cost" => 1, "threads" => 1,
]);
echo password_verify("secret", $hash) ? "ok\n" : "bad\n";
echo password_verify("no", $hash) ? "bad\n" : "ok\n";
PHP
php /tmp/pw.php
php bin/vm.php /tmp/pw.php
php bin/jit.php /tmp/pw.php
./phpc build -o /tmp/pw /tmp/pw.php && /tmp/pw
'
Also: test/repro/maintainer_gap_aot_password_hash_argon2id.php
Done when
Category
bug· php-src-strict · ext/standard/password · user-script AOT · pillar 4Problem
password_hash(..., PASSWORD_ARGON2ID, [...])compiles and runs on VM/JIT (matches Zend) but AOT aborts at LLVM module verify with a dominance error on the options-cost phi. Probed 2026-08-02 @b5715a3e2.password_hash('secret', PASSWORD_ARGON2ID, memory_cost=8,time_cost=1,threads=1)+ verifyok/okInstruction does not dominate all uses!on%pw_cost_*phi (Module->verify)Open Reflection-only siblings (#24827, #25479) do not cover this AOT IR bug.
php-src reference
ext/standard/password.c—php_password_hash/ argon2ext/standard/password.stub.php—password_hashPHP implementation target
ext/standard/lib/JITpassword_hash options lowering for AOT (cost/time/threads phi wiring)runtime/*.cRepro
Also:
test/repro/maintainer_gap_aot_password_hash_argon2id.phpDone when
ok/ok