Fix cppia JIT "Bad move target" on untyped register moves - #1366
Closed
MeguminBOT wants to merge 1 commit into
Closed
Fix cppia JIT "Bad move target" on untyped register moves#1366MeguminBOT wants to merge 1 commit into
MeguminBOT wants to merge 1 commit into
Conversation
MeguminBOT
marked this pull request as draft
August 13, 2026 14:34
CppiaCompiler::convert moves between two untyped registers in three places. getCommonType(jtAny, jtAny) returns jtAny, which move() rejects. The cppia test suite covers it, run with -jit.
MeguminBOT
force-pushed
the
fix-cppia-jit-untyped-register-move
branch
from
August 13, 2026 16:02
78d8605 to
86d568d
Compare
Author
|
Closing, remaking commit |
Member
|
It's fine if you just force push your new commits here, without closing and opening an new PR |
Author
|
gotcha will do in the future. |
Member
|
They should also run on push, but they might require approval for first time contributors |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Any binary subtraction inside a ternary that is converted to String or object triggers it.
Multiplication, division, unary minus and addition are unaffected, as is hoisting the subtraction into a local first.
CppiaCompiler::convertmoved between two registers without giving either a type in three places.move()decides what to emit fromgetCommonType(), andgetCommonType(jtAny, jtAny)returnsjtAny, which theswitch answers with
setError("Bad move target").All three sites are guarded by
inSrc.uses(SLJIT_R1)orinSrc==sJitTemp1, so they are only reached when the source value happens to live in R1.OpAdd::genCodeleaves its int result insJitTemp0and misses the guard, whileOpSub::genCodeusessJitTemp1and hits it, which is why addition compiles and subtraction does not.Reproducable steps
Run