// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-darwin12 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=CHECK-NOERRNO
// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-linux-gnu -S -o - -emit-llvm -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO
// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-apple-darwin12 -S -o - -emit-llvm -x c++ %s | FileCheck %s -check-prefix=CHECK-NOERRNO
// RUN: %clang_cc1 -no-opaque-pointers -triple x86_64-linux-gnu -S -o - -emit-llvm -x c++ -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO
// Prototypes.
extern "C" __cplusplus
}
// Force emission of the declare statements.
void *use = ;
// CHECK-NOERRNO: declare double @atan2(double noundef, double noundef) [[NUWRN:#[0-9]+]]
// CHECK-NOERRNO: declare float @atan2f(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i32 @abs(i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @labs(i64 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llabs(i64 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @copysign(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @copysignf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fabs(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fabsf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fmod(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fmodf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fmodl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @ldexp(double noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @ldexpf(float noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @ldexpl(x86_fp80 noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @nan(i8* noundef) [[NUWRO:#[0-9]+]]
// CHECK-NOERRNO: declare float @nanf(i8* noundef) [[NUWRO]]
// CHECK-NOERRNO: declare x86_fp80 @nanl(i8* noundef) [[NUWRO]]
// CHECK-NOERRNO: declare double @pow(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @powf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @acos(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @acosf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @acosh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @acoshf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @acoshl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @asin(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @asinf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @asinh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @asinhf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @asinhl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @atan(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @atanf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @atanh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @atanhf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @atanhl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @cbrt(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @cbrtf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @cbrtl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @ceil(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @ceilf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @cos(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @cosf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @cosh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @coshf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @coshl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @erf(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @erff(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @erfl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @erfc(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @erfcf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @erfcl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @exp(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @expf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @exp2(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @exp2f(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @expm1(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @expm1f(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @expm1l(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fdim(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fdimf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fdiml(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @floor(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @floorf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fma(double noundef, double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fmaf(float noundef, float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fmax(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fmaxf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @fmin(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @fminf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @hypot(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @hypotf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @hypotl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i32 @ilogb(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i32 @ilogbf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i32 @ilogbl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @lgamma(double noundef) [[NONCONST:#[0-9]+]]
// CHECK-NOERRNO: declare float @lgammaf(float noundef) [[NONCONST]]
// CHECK-NOERRNO: declare x86_fp80 @lgammal(x86_fp80 noundef) [[NONCONST]]
// CHECK-NOERRNO: declare i64 @llrint(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llrintf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llrintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llround(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llroundf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @llroundl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @log(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @logf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @log10(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @log10f(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @log10l(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @log1p(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @log1pf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @log1pl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @log2(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @log2f(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @logb(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @logbf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @logbl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lrint(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lrintf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lrintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lround(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lroundf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare i64 @lroundl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @nearbyint(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @nearbyintf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @nextafter(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @nextafterf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @nextafterl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @nexttoward(double noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @nexttowardf(float noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @nexttowardl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @remainder(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @remainderf(float noundef, float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @remainderl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @rint(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @rintf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @round(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @roundf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @scalbln(double noundef, i64 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @scalblnf(float noundef, i64 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @scalblnl(x86_fp80 noundef, i64 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @scalbn(double noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @scalbnf(float noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @scalbnl(x86_fp80 noundef, i32 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @sin(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @sinf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @sinh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @sinhf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @sinhl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @sqrt(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @sqrtf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @tan(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @tanf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @tanh(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @tanhf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @tanhl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @tgamma(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @tgammaf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @tgammal(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @trunc(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @truncf(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80 noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @cabs(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @cabsf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @cacos(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @cacosf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @cacosh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @cacoshf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @carg(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @cargf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @casin(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @casinf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @casinh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @casinhf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @catan(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @catanf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @catanh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @catanhf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @ccos(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @ccosf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @ccosh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @ccoshf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @cexp(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @cexpf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @cimag(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @cimagf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @conj(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @conjf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @clog(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @clogf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @cproj(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @cprojf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @cpow(double noundef, double noundef, double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @cpowf(<2 x float> noundef, <2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @creal(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @crealf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @csin(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @csinf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @csinh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @csinhf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @csqrt(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @csqrtf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @ctan(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @ctanf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare { double, double } @ctanh(double noundef, double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare <2 x float> @ctanhf(<2 x float> noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @__sinpi(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @__sinpif(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @__cospi(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @__cospif(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @__tanpi(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @__tanpif(float noundef) [[NUWRN]]
// CHECK-NOERRNO: declare double @__exp10(double noundef) [[NUWRN]]
// CHECK-NOERRNO: declare float @__exp10f(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare i32 @abs(i32 noundef) [[NUWRN:#[0-9]+]]
// CHECK-ERRNO: declare i64 @labs(i64 noundef) [[NUWRN]]
// CHECK-ERRNO: declare i64 @llabs(i64 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @copysign(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @copysignf(float noundef, float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @fabs(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @fabsf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @nan(i8* noundef) [[NUWRO:#[0-9]+]]
// CHECK-ERRNO: declare float @nanf(i8* noundef) [[NUWRO]]
// CHECK-ERRNO: declare x86_fp80 @nanl(i8* noundef) [[NUWRO]]
// CHECK-ERRNO: declare double @ceil(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @ceilf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @floor(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @floorf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @fmax(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @fmaxf(float noundef, float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @fmin(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @fminf(float noundef, float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80 noundef, x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @lgamma(double noundef) [[NONCONST:#[0-9]+]]
// CHECK-ERRNO: declare float @lgammaf(float noundef) [[NONCONST]]
// CHECK-ERRNO: declare x86_fp80 @lgammal(x86_fp80 noundef) [[NONCONST]]
// CHECK-ERRNO: declare double @nearbyint(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @nearbyintf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @rint(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @rintf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @round(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @roundf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @trunc(double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @truncf(float noundef) [[NUWRN]]
// CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80 noundef) [[NUWRN]]
// CHECK-ERRNO: declare double @cabs(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare float @cabsf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @cacos(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @cacosf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @cacosh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @cacoshf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare double @carg(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare float @cargf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @casin(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @casinf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @casinh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @casinhf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @catan(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @catanf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @catanh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @catanhf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @ccos(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @ccosf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @ccosh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @ccoshf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @cexp(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @cexpf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare double @cimag(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @cimagf(<2 x float> noundef) [[NUWRN]]
// CHECK-ERRNO: declare { double, double } @conj(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare <2 x float> @conjf(<2 x float> noundef) [[NUWRN]]
// CHECK-ERRNO: declare { double, double } @clog(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @clogf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @cproj(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare <2 x float> @cprojf(<2 x float> noundef) [[NUWRN]]
// CHECK-ERRNO: declare { double, double } @cpow(double noundef, double noundef, double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @cpowf(<2 x float> noundef, <2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare double @creal(double noundef, double noundef) [[NUWRN]]
// CHECK-ERRNO: declare float @crealf(<2 x float> noundef) [[NUWRN]]
// CHECK-ERRNO: declare { double, double } @csin(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @csinf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @csinh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @csinhf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @csqrt(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @csqrtf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @ctan(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @ctanf(<2 x float> noundef) [[NONCONST]]
// CHECK-ERRNO: declare { double, double } @ctanh(double noundef, double noundef) [[NONCONST]]
// CHECK-ERRNO: declare <2 x float> @ctanhf(<2 x float> noundef) [[NONCONST]]
// CHECK-NOERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} }
// CHECK-NOERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} }
// CHECK-ERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} }
// CHECK-ERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} }