CL 11252 introduces a vet check for integer comparisons. It has false positives when checking code like u > uint64(^uintptr(0)) where u is a uint64. This expression is always false when compiled for 64 bit machines but not for 32 bit machines. IIRC, something similar occurred for the suspicious shift vet check.
It would be nice if vet checks could inquire about types and values on a per-int-size basis.
go/types uses the host machine's integer size as a default. We could override that in vet and typecheck twice, once with 32 bit ints and once with 64 bit ints, but that would be expensive. Maybe there's a better way?
/cc @robpike @griesemer