Work around -Werror=type-limits under gcc 10.2 (#8092)
* Work around `-Werror=type-limits` under gcc 10.2
This is an error when tag is greater than 128 under gcc 10.2: `if (tag < 128) return *ptr == tag;`
It's an error even though the comparison occurs in a branch of code we know won't be taken. See https://godbolt.org/z/1eaP86
This works around the problem by casting `tag` to the same type as `*ptr`.