[4.2] SILGen: When transforming to AnyHashable materialize the value in a temporary #17929
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.
emitAnyHashable expects an address value.
Cherry-pick from #17928.
Explanation: When transforming values to AnyHashable we sometimes (e.g
tuples of strings) omit converting the value to an address type by
storing it to the stack leading to a compiler crash.
The fix is to store the value to the stack if it is not already
available as an in memory value.
Scope: Affects only conversions to AnyHashable. The code seems to stem
from 2016.
Risk: Low. Code is added that checks that the value expected by
emitAnyHashable is already in memory if it is not we store it to memory.
Testing: A Swift CI test was added.
rdar://40583597