builtin_type_long_long if builtin_type_long isn't big enough or if
an "LL" suffix is used. Properly handle "UL" or "LU" suffixes.
}
else
{
- high_bit = ((unsigned LONGEST)1) << (TARGET_LONG_LONG_BIT - 1);
+ high_bit = (((unsigned LONGEST)1)
+ << (TARGET_LONG_LONG_BIT - 32 - 1)
+ << 16
+ << 16);
+ if (high_bit == 0)
+ /* A long long does not fit in a LONGEST. */
+ high_bit = (unsigned LONGEST)1 << sizeof (LONGEST) * HOST_CHAR_BIT - 1;
unsigned_type = builtin_type_unsigned_long_long;
signed_type = builtin_type_long_long;
}