fix: compiler crash when compiling for iOS #1441
Merged
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.
Summary
Fix a compiler crash when compiling any program for iOS with threading
enabled. Only the iOS target was affected.
Details
Due to
StrTab
ordering, within thesystem
module, all calls tosizeof
outside of generic routines resolve to thesizeof(x: T)
symbol, foregoing overload resolution since
sizeof
is an "eager"magic.
If called with the symbol of a type that has an unknown size (which
happens in a
when defined(ios)
guarded part ofsyslocks
), the firstparameter's type of the callee reaching
mirgen
is atyGenericParam
,and thus
mirgen.genArgs
attempts to translate theskType
symbollike a normal expression, triggering an assertion.
Always using overload resolution for
sizeof
would result inunnecessary generic instantiations, so
mirgen
now uses dedicatedhandling for the
mSizeOf
magic, always translating argument as atype, thus fixing the crash.
Fixes #1436.