OS#15997192: Disable strict valuetype assert for hoistable syms #5547
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.
The assert says that for a hoistable value, if its valuetype is primitive in the loop landing pad, it should be atleast LikelyPrimitive inside the loop.
This assert does not hold true in a few cases when we force specialize syms in the loop landing pad.
Ex :
landingPad:
a = v1;
b = v1;
loop :
b = v2; // forces float conversion in landing pad
c = a;
jump loop
During force specializing in loop landing pad of b, both a and b have the same valueinfo, so they transition to a DefiniteFloat.
This takes b to definite float in the loop landing pad but not inside the loop.
We do not have a way to force Specialize a in the loop, we cannot assume force specializing b again in the loop will update the valueInfo of a,
because they may have different value numbers in the loop. Since we don't have a way to lookup values by valueNumber, there is no easy way to fix this gap currently.
Added test to keep track of this gap.