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