13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only %s 2804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 3804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar// Math stuff 4804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 5804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g0 = __builtin_huge_val(); 6804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarfloat g1 = __builtin_huge_valf(); 7804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarlong double g2 = __builtin_huge_vall(); 8804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 9804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g3 = __builtin_inf(); 10804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarfloat g4 = __builtin_inff(); 11804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarlong double g5 = __builtin_infl(); 12804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 13804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g6 = __builtin_nan(""); 14804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarfloat g7 = __builtin_nanf(""); 15804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarlong double g8 = __builtin_nanl(""); 16804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 17804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar// GCC constant folds these too (via native strtol): 18804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//double g6_1 = __builtin_nan("1"); 19804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//float g7_1 = __builtin_nanf("1"); 20804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//long double g8_1 = __builtin_nanl("1"); 21804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 22804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar// APFloat doesn't have signalling NaN functions. 23804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//double g9 = __builtin_nans(""); 24804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//float g10 = __builtin_nansf(""); 25804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//long double g11 = __builtin_nansl(""); 26804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 27804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//int g12 = __builtin_abs(-12); 28804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 29804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g13 = __builtin_fabs(-12.); 30804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g13_0 = __builtin_fabs(-0.); 31804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g13_1 = __builtin_fabs(-__builtin_inf()); 32804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarfloat g14 = __builtin_fabsf(-12.f); 33804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar// GCC doesn't eat this one. 34804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//long double g15 = __builtin_fabsfl(-12.0L); 35804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 36804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarfloat g16 = __builtin_copysign(1.0, -1.0); 37804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbardouble g17 = __builtin_copysignf(1.0f, -1.0f); 38804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarlong double g18 = __builtin_copysignl(1.0L, -1.0L); 39804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 40804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//double g19 = __builtin_powi(2.0, 4); 41804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//float g20 = __builtin_powif(2.0f, 4); 42804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//long double g21 = __builtin_powil(2.0L, 4); 43804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 44804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar// GCC misc stuff 45804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 46804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarextern int f(); 47804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar 48804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbarint h0 = __builtin_types_compatible_p(int, float); 49804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//int h1 = __builtin_choose_expr(1, 10, f()); 50804ead0dd1713c3c8a02853fc0a5d898a46889a9Daniel Dunbar//int h2 = __builtin_expect(0, 0); 514b54e8f07c3acbb3919a6b2a28639e8765c62366Douglas Gregorextern long int bi0; 524b54e8f07c3acbb3919a6b2a28639e8765c62366Douglas Gregorextern __typeof__(__builtin_expect(0, 0)) bi0; 5320991b29460183852044712a03fa1647e9a14176Douglas Gregor 5420991b29460183852044712a03fa1647e9a14176Douglas Gregor// Strings 5520991b29460183852044712a03fa1647e9a14176Douglas Gregorint array1[__builtin_strlen("ab\0cd")]; 5620991b29460183852044712a03fa1647e9a14176Douglas Gregorint array2[(sizeof(array1)/sizeof(int)) == 2? 1 : -1]; 57