<div dir="ltr">On Sat, Oct 26, 2013 at 4:16 PM, JF Bastien <span dir="ltr"><<a href="mailto:jfb@google.com" target="_blank">jfb@google.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I couldn't find a pre-existing test for this file, how about I add the<br>
following as tools/clang/test/Headers/limits.cpp :<br></blockquote><div><br></div><div>SGTM, go ahead, thanks!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

// RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify %s<br>
// RUN: %clang_cc1 -fno-signed-char -ffreestanding -fsyntax-only -verify %s<br>
// RUN: %clang_cc1 -std=c++11 -ffreestanding -fsyntax-only -verify %s<br>
// expected-no-diagnostics<br>
<br>
#include <limits.h><br>
<br>
_Static_assert(SCHAR_MAX == -(SCHAR_MIN+1), "");<br>
_Static_assert(SHRT_MAX == -(SHRT_MIN+1), "");<br>
_Static_assert(INT_MAX == -(INT_MIN+1), "");<br>
_Static_assert(LONG_MAX == -(LONG_MIN+1L), "");<br>
<br>
_Static_assert(SCHAR_MIN == -SCHAR_MAX-1, "");<br>
_Static_assert(SHRT_MIN == -SHRT_MAX-1, "");<br>
_Static_assert(INT_MIN == -INT_MAX-1, "");<br>
_Static_assert(LONG_MIN == -LONG_MAX-1L, "");<br></blockquote><div><br></div><div>It'd be nice to test that the values are actually correct, as well as that they are in matching pairs. Something like:</div>
<div><br></div><div>(unsigned char)SCHAR_MIN == (unsigned char)SCHAR_MAX + 1</div><div><br></div><div>... should do the trick.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

_Static_assert(UCHAR_MAX == (unsigned char)~0ULL, "");<br>
_Static_assert(USHRT_MAX == (unsigned short)~0ULL, "");<br>
_Static_assert(UINT_MAX == (unsigned int)~0ULL, "");<br>
_Static_assert(ULONG_MAX == (unsigned long)~0ULL, "");<br>
<br>
_Static_assert(MB_LEN_MAX >= 1, "");<br>
<br>
_Static_assert(CHAR_BIT >= 8, "");<br>
<br>
const bool char_is_signed = (char)-1 < (char)0;<br>
_Static_assert(CHAR_MIN == (char_is_signed ? -CHAR_MAX-1 : 0), "");<br>
_Static_assert(CHAR_MAX == (char_is_signed ? -(CHAR_MIN+1) : (char)~0ULL), "");<br>
<div class="im"><br>
#if __STDC_VERSION__ >= 199901 || __cplusplus >= 201103L<br>
</div>_Static_assert(LLONG_MAX == -(LLONG_MIN+1LL), "");<br>
_Static_assert(LLONG_MIN == -LLONG_MAX-1LL, "");<br>
_Static_assert(ULLONG_MAX == (unsigned long long)~0ULL, "");<br></blockquote><div><br></div><div>Maybe:</div><div><br></div><div>#else</div><div><br></div><div>int LLONG_MIN, LLONG_MAX, ULLONG_MAX; // not defined</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
#endif<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Fri, Oct 25, 2013 at 3:43 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>> wrote:<br>
> Please add a test for this. Otherwise LGTM.<br>
><br>
> On 22 Oct 2013 16:02, "JF Bastien" <<a href="mailto:jfb@google.com">jfb@google.com</a>> wrote:<br>
>><br>
>> C99 has LLONG_MIN, LLONG_MAX, ULLONG_MAX and so does C++11. Teach clang's<br>
>> limits.h about it.<br>
>><br>
>> diff --git a/lib/Headers/limits.h b/lib/Headers/limits.h<br>
>> index ecd09a4..91bd404 100644<br>
>> --- a/lib/Headers/limits.h<br>
>> +++ b/lib/Headers/limits.h<br>
>> @@ -87,8 +87,10 @@<br>
>>  #define CHAR_MAX __SCHAR_MAX__<br>
>>  #endif<br>
>><br>
>> -/* C99 5.2.4.2.1: Added long long. */<br>
>> -#if __STDC_VERSION__ >= 199901<br>
>> +/* C99 5.2.4.2.1: Added long long.<br>
>> +   C++11 <a href="http://18.3.3.2" target="_blank">18.3.3.2</a>: same contents as the Standard C Library header<br>
>> <limits.h>.<br>
>> + */<br>
>> +#if __STDC_VERSION__ >= 199901 || __cplusplus >= 201103L<br>
>><br>
>>  #undef  LLONG_MIN<br>
>>  #undef  LLONG_MAX<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
>><br>
><br>
</div></div></blockquote></div><br></div></div>