117 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-linux -verify %s2// RUN: %clang_cc1 -triple i686-unknown-linux -verify %s3// RUN: %clang_cc1 -triple x86_64-unknown-win32 -verify %s4// RUN: %clang_cc1 -triple i686-unknown-win32 -verify %s5 6/* WG14 N629: yes7 * integer constant type rules8 */9 10// expected-no-diagnostics11 12void test_decimal_constants(void) {13 // Easy cases where the value fits into the type you'd expect.14 (void)_Generic(2, int : 1);15 (void)_Generic(2u, unsigned int : 1);16 (void)_Generic(2l, long : 1);17 (void)_Generic(2ul, unsigned long : 1);18 (void)_Generic(2ll, long long : 1);19 (void)_Generic(2ull, unsigned long long : 1);20 21#if __INT_WIDTH__ == 1622 #if __LONG_WIDTH__ > 1623 (void)_Generic(65536, long : 1);24 (void)_Generic(65536U, unsigned long : 1);25 #else26 (void)_Generic(65536, long long : 1);27 (void)_Generic(65536U, unsigned long : 1);28 #endif // __LONG_WIDTH__ > 1629#elif __INT_WIDTH__ == 3230 #if __LONG_WIDTH__ > 3231 (void)_Generic(4294967296, long : 1);32 (void)_Generic(4294967296U, unsigned long : 1);33 #else34 (void)_Generic(4294967296, long long : 1);35 (void)_Generic(4294967296U, unsigned long long : 1);36 #endif // __LONG_WIDTH__ > 3237#endif38 39#if __LONG_WIDTH__ > 3240 (void)_Generic(4294967296L, long : 1);41 (void)_Generic(4294967296U, unsigned long : 1);42#else43 (void)_Generic(4294967296L, long long : 1);44 (void)_Generic(4294967296U, unsigned long long : 1);45#endif46}47 48void test_octal_constants(void) {49 (void)_Generic(02, int : 1);50 (void)_Generic(02u, unsigned int : 1);51 (void)_Generic(02l, long : 1);52 (void)_Generic(02ul, unsigned long : 1);53 (void)_Generic(02ll, long long : 1);54 (void)_Generic(02ull, unsigned long long : 1);55 56#if __INT_WIDTH__ == 1657 #if __LONG_WIDTH__ > 1658 (void)_Generic(0200000, long : 1);59 (void)_Generic(0200000U, unsigned long : 1);60 #else61 (void)_Generic(0200000, long long : 1);62 (void)_Generic(0200000U, unsigned long : 1);63 #endif // __LONG_WIDTH__ > 1664#elif __INT_WIDTH__ == 3265 #if __LONG_WIDTH__ > 3266 (void)_Generic(040000000000, long : 1);67 (void)_Generic(040000000000U, unsigned long : 1);68 #else69 (void)_Generic(040000000000, long long : 1);70 (void)_Generic(040000000000U, unsigned long long : 1);71 #endif // __LONG_WIDTH__ > 3272#endif73 74#if __LONG_WIDTH__ > 3275 (void)_Generic(040000000000L, long : 1);76 (void)_Generic(040000000000U, unsigned long : 1);77#else78 (void)_Generic(040000000000L, long long : 1);79 (void)_Generic(040000000000U, unsigned long long : 1);80#endif81}82 83void test_hexadecimal_constants(void) {84 (void)_Generic(0x2, int : 1);85 (void)_Generic(0x2u, unsigned int : 1);86 (void)_Generic(0x2l, long : 1);87 (void)_Generic(0x2ul, unsigned long : 1);88 (void)_Generic(0x2ll, long long : 1);89 (void)_Generic(0x2ull, unsigned long long : 1);90 91#if __INT_WIDTH__ == 1692 #if __LONG_WIDTH__ > 1693 (void)_Generic(0x10000, long : 1);94 (void)_Generic(0x10000U, unsigned long : 1);95 #else96 (void)_Generic(0x10000, long long : 1);97 (void)_Generic(0x10000U, unsigned long : 1);98 #endif // __LONG_WIDTH__ > 1699#elif __INT_WIDTH__ == 32100 #if __LONG_WIDTH__ > 32101 (void)_Generic(0x100000000, long : 1);102 (void)_Generic(0x100000000U, unsigned long : 1);103 #else104 (void)_Generic(0x100000000, long long : 1);105 (void)_Generic(0x100000000U, unsigned long long : 1);106 #endif // __LONG_WIDTH__ > 32107#endif108 109#if __LONG_WIDTH__ > 32110 (void)_Generic(0x100000000L, long : 1);111 (void)_Generic(0x100000000U, unsigned long : 1);112#else113 (void)_Generic(0x100000000L, long long : 1);114 (void)_Generic(0x100000000U, unsigned long long : 1);115#endif116}117