constant-builtins-2.c revision df7c3b955e31a6951822f2adf36e98543ef14c7e
1// RUN: clang-cc -fsyntax-only %s 2 3// Math stuff 4 5double g0 = __builtin_huge_val(); 6float g1 = __builtin_huge_valf(); 7long double g2 = __builtin_huge_vall(); 8 9double g3 = __builtin_inf(); 10float g4 = __builtin_inff(); 11long double g5 = __builtin_infl(); 12 13double g6 = __builtin_nan(""); 14float g7 = __builtin_nanf(""); 15long double g8 = __builtin_nanl(""); 16 17// GCC constant folds these too (via native strtol): 18//double g6_1 = __builtin_nan("1"); 19//float g7_1 = __builtin_nanf("1"); 20//long double g8_1 = __builtin_nanl("1"); 21 22// APFloat doesn't have signalling NaN functions. 23//double g9 = __builtin_nans(""); 24//float g10 = __builtin_nansf(""); 25//long double g11 = __builtin_nansl(""); 26 27//int g12 = __builtin_abs(-12); 28 29double g13 = __builtin_fabs(-12.); 30double g13_0 = __builtin_fabs(-0.); 31double g13_1 = __builtin_fabs(-__builtin_inf()); 32float g14 = __builtin_fabsf(-12.f); 33// GCC doesn't eat this one. 34//long double g15 = __builtin_fabsfl(-12.0L); 35 36float g16 = __builtin_copysign(1.0, -1.0); 37double g17 = __builtin_copysignf(1.0f, -1.0f); 38long double g18 = __builtin_copysignl(1.0L, -1.0L); 39 40//double g19 = __builtin_powi(2.0, 4); 41//float g20 = __builtin_powif(2.0f, 4); 42//long double g21 = __builtin_powil(2.0L, 4); 43 44// GCC misc stuff 45 46extern int f(); 47 48int h0 = __builtin_types_compatible_p(int, float); 49//int h1 = __builtin_choose_expr(1, 10, f()); 50//int h2 = __builtin_expect(0, 0); 51extern long int bi0; 52extern __typeof__(__builtin_expect(0, 0)) bi0; 53