Set cheap-to-compare IdInfo fields only if they have changed
We should try setting IdInfo fields that are cheap to compare, like bitfield (which is just a Word64), only if they have changed. For fields like demandInfo, we could try to extract the cases which are common and cheap to compare (e.g. topDmd) into a cheapEqX function that does the cheap comparison, with the property that cheapEqX a b ==> (a == b), e.g. cheapEqX will never return True when (==) would not.
It would be interesting to see the impact on compile-time allocations. Although I fear that the compiler then might be unable to "fuse" multiple setters into one record update with case-of-known-constructor as well as it can (at least could, I think?) now.