Skip to content

Fix GH-24622: Preserve inherited JIT register spill requirements - #24642

Open
kairosci wants to merge 1 commit into
php:PHP-8.5from
kairosci:fix/gh-24622-jit-inherited-registers
Open

kairosci wants to merge 1 commit into
php:PHP-8.5from
kairosci:fix/gh-24622-jit-inherited-registers

Conversation

@kairosci

Copy link
Copy Markdown
Contributor

Fixes #24622 by preserving spill requirements for register values inherited by side traces. Adds regression coverage; OPcache tests pass with debug ZTS and optimized NTS builds.

Comment thread ext/opcache/tests/jit/gh24622.phpt Outdated
}
}

$sb = new StringBuffer();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I think the bug can still be reproduced without this block (up to line 124) wdyt ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that block isn't needed. I've removed it and verified that the reduced test still fails without the fix and passes with it on a debug ZTS build.

@kairosci
kairosci force-pushed the fix/gh-24622-jit-inherited-registers branch from 558324d to 170bf2d Compare October 25, 2026 09:52
@kairosci
kairosci requested a review from LamentXU123 as a code owner October 25, 2026 13:02
@kairosci
kairosci force-pushed the fix/gh-24622-jit-inherited-registers branch from 2bd8a6f to 170bf2d Compare October 25, 2026 13:05
@kairosci

Copy link
Copy Markdown
Contributor Author

The failing macOS CI job is due to an existing intl test compatibility issue exposed by the runner upgrading to ICU 79.1, unrelated to this JIT fix. The three failures are in the IntlDateFormatter::formatObject() calendar/DateTime tests and IntlTimeZone::getIDForWindowsID(): ICU 79.1 changed the Portuguese GMT offset formatting and the Canadian Pacific Standard Time mapping.

These test expectation updates have been split into #24684. This PR now contains only the GH-24622 JIT fix and its regression test. The GH-24622 regression test passes locally on a debug ZTS build.

Failing job: https://github.com/php/php-src/actions/runs/40182427911/job/121136134766

@kairosci
kairosci force-pushed the fix/gh-24622-jit-inherited-registers branch from 170bf2d to a7fbaed Compare October 25, 2026 14:26
@kairosci

Copy link
Copy Markdown
Contributor Author

@devnexen could you take another look? Thanks

@kairosci
kairosci force-pushed the fix/gh-24622-jit-inherited-registers branch from 5c57dd2 to 05fddfc Compare October 25, 2026 20:10
@kairosci

Copy link
Copy Markdown
Contributor Author

I just changed the username to my real name in news and force-pushed it as a single commit.

@kairosci

Copy link
Copy Markdown
Contributor Author

@LamentXU123 as soon as you can, could you take a look at it? Thanks!

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants