JIT: Fix removal of intermediate double cast in long->double->float chains #117554
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.
This is a follow up to #114597. It fixes the invalid removal of the intermediate double cast in a
conv.r.un; conv.r8; conv.r4
IL sequence.The original form of the optimization was primarily intended to deal with
conv.r.un; conv.r4
(directulong->float
cast), which is now handled by the importer since #114597. However, it did also catch some actual redundant intermediate double casts.This change removes the platform
#ifdef
s for the optimization since when it's valid, it's valid for all platforms.(peeled off from #116805)