@@ -258,10 +258,19 @@ return (id)[[OFNumber of_alloc] initWithUnsignedLongLong: (unsigned long long)uIntMax]; return (id)[[OFNumber of_alloc] initWithUIntMax: uIntMax]; } + +#ifdef __clang__ +/* + * This warning should probably not exist at all, as it prevents checking + * whether one type fits into another in a portable way. + */ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wtautological-constant-out-of-range-compare" +#endif - (instancetype)initWithPtrDiff: (ptrdiff_t)ptrDiff { if (ptrDiff >= LLONG_MIN && ptrDiff <= LLONG_MAX) return (id)[[OFNumber of_alloc] @@ -287,10 +296,14 @@ return (id)[[OFNumber of_alloc] initWithUnsignedLongLong: (unsigned long long)uIntPtr]; return (id)[[OFNumber of_alloc] initWithUIntPtr: uIntPtr]; } + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif - (instancetype)initWithFloat: (float)float_ { if (float_ == (uintmax_t)float_) return (id)[[OFNumber of_alloc]