Fix sets for architectures with default integers smaller than 32 bits #15258
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.
As discussed on IRC I recently discovered that sets didn't work properly on Arduino boards. Something as simple as this would fail:
The core of the issue turned out to be that AVR har 16-bit default integers, which means that checking for any number larger than 16 in a set small enough to be defined as a regular integer and not an array would fail. This is caused by a left shift on the default sized integer which would silently overflow and use an empty mask to check.