#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ cabs(float);
int /*<<< orphan*/ cabsf(float);
int /*<<< orphan*/ cabsl(float);
int /*<<< orphan*/ cacos(float);
int /*<<< orphan*/ cacosf(float);
int /*<<< orphan*/ cacosh(float);
int /*<<< orphan*/ cacoshf(float);
int /*<<< orphan*/ cacoshl(float);
int /*<<< orphan*/ cacosl(float);
int /*<<< orphan*/ carg(float);
int /*<<< orphan*/ cargf(float);
int /*<<< orphan*/ cargl(float);
int /*<<< orphan*/ casin(float);
int /*<<< orphan*/ casinf(float);
int /*<<< orphan*/ casinh(float);
int /*<<< orphan*/ casinhf(float);
int /*<<< orphan*/ casinhl(float);
int /*<<< orphan*/ casinl(float);
int /*<<< orphan*/ catan(float);
int /*<<< orphan*/ catanf(float);
int /*<<< orphan*/ catanh(float);
int /*<<< orphan*/ catanhf(float);
int /*<<< orphan*/ catanhl(float);
int /*<<< orphan*/ catanl(float);
int /*<<< orphan*/ ccos(float);
int /*<<< orphan*/ ccosf(float);
int /*<<< orphan*/ ccosh(float);
int /*<<< orphan*/ ccoshf(float);
int /*<<< orphan*/ ccoshl(float);
int /*<<< orphan*/ ccosl(float);
int /*<<< orphan*/ cexp(float);
int /*<<< orphan*/ cexpf(float);
int /*<<< orphan*/ cexpl(float);
int /*<<< orphan*/ cimag(float);
int /*<<< orphan*/ cimagf(float);
int /*<<< orphan*/ cimagl(float);
int /*<<< orphan*/ clog(float);
int /*<<< orphan*/ clogf(float);
int /*<<< orphan*/ clogl(float);
int /*<<< orphan*/ conj(float);
int /*<<< orphan*/ conjf(float);
int /*<<< orphan*/ conjl(float);
int /*<<< orphan*/ cpow(float, float);
int /*<<< orphan*/ cpowf(float, float);
int /*<<< orphan*/ cpowl(float, float);
int /*<<< orphan*/ cproj(float);
int /*<<< orphan*/ cprojf(float);
int /*<<< orphan*/ cprojl(float);
int /*<<< orphan*/ creal(float);
int /*<<< orphan*/ crealf(float);
int /*<<< orphan*/ creall(float);
int /*<<< orphan*/ csin(float);
int /*<<< orphan*/ csinf(float);
int /*<<< orphan*/ csinh(float);
int /*<<< orphan*/ csinhf(float);
int /*<<< orphan*/ csinhl(float);
int /*<<< orphan*/ csinl(float);
int /*<<< orphan*/ csqrt(float);
int /*<<< orphan*/ csqrtf(float);
int /*<<< orphan*/ csqrtl(float);
int /*<<< orphan*/ ctan(float);
int /*<<< orphan*/ ctanf(float);
int /*<<< orphan*/ ctanh(float);
int /*<<< orphan*/ ctanhf(float);
int /*<<< orphan*/ ctanhl(float);
int /*<<< orphan*/ ctanl(float);
void foo(float f) {
  cabs(f);
  cabsf(f);
  cabsl(f);
  cacos(f);
  cacosf(f);
  cacosl(f);
  cacosh(f);
  cacoshf(f);
  cacoshl(f);
  carg(f);
  cargf(f);
  cargl(f);
  casin(f);
  casinf(f);
  casinl(f);
  casinh(f);
  casinhf(f);
  casinhl(f);
  catan(f);
  catanf(f);
  catanl(f);
  catanh(f);
  catanhf(f);
  catanhl(f);
  ccos(f);
  ccosf(f);
  ccosl(f);
  ccosh(f);
  ccoshf(f);
  ccoshl(f);
  cexp(f);
  cexpf(f);
  cexpl(f);
  cimag(f);
  cimagf(f);
  cimagl(f);
  conj(f);
  conjf(f);
  conjl(f);
  clog(f);
  clogf(f);
  clogl(f);
  cproj(f);
  cprojf(f);
  cprojl(f);
  cpow(f, f);
  cpowf(f, f);
  cpowl(f, f);
  creal(f);
  crealf(f);
  creall(f);
  csin(f);
  csinf(f);
  csinl(f);
  csinh(f);
  csinhf(f);
  csinhl(f);
  csqrt(f);
  csqrtf(f);
  csqrtl(f);
  ctan(f);
  ctanf(f);
  ctanl(f);
  ctanh(f);
  ctanhf(f);
  ctanhl(f);
}


x86 assembly (clang, -O0):
<foo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
call   20f0 <cabs@plt>
movss  -0x4(%rbp),%xmm0
call   2200 <cabsf@plt>
movss  -0x4(%rbp),%xmm0
call   21b0 <cabsl@plt>
movss  -0x4(%rbp),%xmm0
call   2030 <cacos@plt>
movss  -0x4(%rbp),%xmm0
call   2430 <cacosf@plt>
movss  -0x4(%rbp),%xmm0
call   23e0 <cacosl@plt>
movss  -0x4(%rbp),%xmm0
call   23c0 <cacosh@plt>
movss  -0x4(%rbp),%xmm0
call   2330 <cacoshf@plt>
movss  -0x4(%rbp),%xmm0
call   2350 <cacoshl@plt>
movss  -0x4(%rbp),%xmm0
call   2100 <carg@plt>
movss  -0x4(%rbp),%xmm0
call   2070 <cargf@plt>
movss  -0x4(%rbp),%xmm0
call   2220 <cargl@plt>
movss  -0x4(%rbp),%xmm0
call   2240 <casin@plt>
movss  -0x4(%rbp),%xmm0
call   2280 <casinf@plt>
movss  -0x4(%rbp),%xmm0
call   20a0 <casinl@plt>
movss  -0x4(%rbp),%xmm0
call   2090 <casinh@plt>
movss  -0x4(%rbp),%xmm0
call   2170 <casinhf@plt>
movss  -0x4(%rbp),%xmm0
call   2190 <casinhl@plt>
movss  -0x4(%rbp),%xmm0
call   2230 <catan@plt>
movss  -0x4(%rbp),%xmm0
call   20d0 <catanf@plt>
movss  -0x4(%rbp),%xmm0
call   2110 <catanl@plt>
movss  -0x4(%rbp),%xmm0
call   21e0 <catanh@plt>
movss  -0x4(%rbp),%xmm0
call   22b0 <catanhf@plt>
movss  -0x4(%rbp),%xmm0
call   22c0 <catanhl@plt>
movss  -0x4(%rbp),%xmm0
call   2210 <ccos@plt>
movss  -0x4(%rbp),%xmm0
call   2160 <ccosf@plt>
movss  -0x4(%rbp),%xmm0
call   2140 <ccosl@plt>
movss  -0x4(%rbp),%xmm0
call   2130 <ccosh@plt>
movss  -0x4(%rbp),%xmm0
call   21c0 <ccoshf@plt>
movss  -0x4(%rbp),%xmm0
call   21d0 <ccoshl@plt>
movss  -0x4(%rbp),%xmm0
call   2270 <cexp@plt>
movss  -0x4(%rbp),%xmm0
call   22a0 <cexpf@plt>
movss  -0x4(%rbp),%xmm0
call   2290 <cexpl@plt>
movss  -0x4(%rbp),%xmm0
call   2260 <cimag@plt>
movss  -0x4(%rbp),%xmm0
call   2440 <cimagf@plt>
movss  -0x4(%rbp),%xmm0
call   23f0 <cimagl@plt>
movss  -0x4(%rbp),%xmm0
call   2150 <conj@plt>
movss  -0x4(%rbp),%xmm0
call   20c0 <conjf@plt>
movss  -0x4(%rbp),%xmm0
call   2060 <conjl@plt>
movss  -0x4(%rbp),%xmm0
call   23a0 <clog@plt>
movss  -0x4(%rbp),%xmm0
call   2080 <clogf@plt>
movss  -0x4(%rbp),%xmm0
call   20b0 <clogl@plt>
movss  -0x4(%rbp),%xmm0
call   2370 <cproj@plt>
movss  -0x4(%rbp),%xmm0
call   21a0 <cprojf@plt>
movss  -0x4(%rbp),%xmm0
call   2180 <cprojl@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x4(%rbp),%xmm1
call   2040 <cpow@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x4(%rbp),%xmm1
call   2340 <cpowf@plt>
movss  -0x4(%rbp),%xmm0
movss  -0x4(%rbp),%xmm1
call   2360 <cpowl@plt>
movss  -0x4(%rbp),%xmm0
call   21f0 <creal@plt>
movss  -0x4(%rbp),%xmm0
call   2390 <crealf@plt>
movss  -0x4(%rbp),%xmm0
call   2410 <creall@plt>
movss  -0x4(%rbp),%xmm0
call   2120 <csin@plt>
movss  -0x4(%rbp),%xmm0
call   22e0 <csinf@plt>
movss  -0x4(%rbp),%xmm0
call   22d0 <csinl@plt>
movss  -0x4(%rbp),%xmm0
call   2320 <csinh@plt>
movss  -0x4(%rbp),%xmm0
call   2050 <csinhf@plt>
movss  -0x4(%rbp),%xmm0
call   20e0 <csinhl@plt>
movss  -0x4(%rbp),%xmm0
call   2420 <csqrt@plt>
movss  -0x4(%rbp),%xmm0
call   2400 <csqrtf@plt>
movss  -0x4(%rbp),%xmm0
call   2380 <csqrtl@plt>
movss  -0x4(%rbp),%xmm0
call   2250 <ctan@plt>
movss  -0x4(%rbp),%xmm0
call   2300 <ctanf@plt>
movss  -0x4(%rbp),%xmm0
call   2310 <ctanl@plt>
movss  -0x4(%rbp),%xmm0
call   22f0 <ctanh@plt>
movss  -0x4(%rbp),%xmm0
call   23d0 <ctanhf@plt>
movss  -0x4(%rbp),%xmm0
call   23b0 <ctanhl@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<foo>:
push   %rax
movss  %xmm0,0x4(%rsp)
call   20f0 <cabs@plt>
movss  0x4(%rsp),%xmm0
call   2200 <cabsf@plt>
movss  0x4(%rsp),%xmm0
call   21b0 <cabsl@plt>
movss  0x4(%rsp),%xmm0
call   2030 <cacos@plt>
movss  0x4(%rsp),%xmm0
call   2430 <cacosf@plt>
movss  0x4(%rsp),%xmm0
call   23e0 <cacosl@plt>
movss  0x4(%rsp),%xmm0
call   23c0 <cacosh@plt>
movss  0x4(%rsp),%xmm0
call   2330 <cacoshf@plt>
movss  0x4(%rsp),%xmm0
call   2350 <cacoshl@plt>
movss  0x4(%rsp),%xmm0
call   2100 <carg@plt>
movss  0x4(%rsp),%xmm0
call   2070 <cargf@plt>
movss  0x4(%rsp),%xmm0
call   2220 <cargl@plt>
movss  0x4(%rsp),%xmm0
call   2240 <casin@plt>
movss  0x4(%rsp),%xmm0
call   2280 <casinf@plt>
movss  0x4(%rsp),%xmm0
call   20a0 <casinl@plt>
movss  0x4(%rsp),%xmm0
call   2090 <casinh@plt>
movss  0x4(%rsp),%xmm0
call   2170 <casinhf@plt>
movss  0x4(%rsp),%xmm0
call   2190 <casinhl@plt>
movss  0x4(%rsp),%xmm0
call   2230 <catan@plt>
movss  0x4(%rsp),%xmm0
call   20d0 <catanf@plt>
movss  0x4(%rsp),%xmm0
call   2110 <catanl@plt>
movss  0x4(%rsp),%xmm0
call   21e0 <catanh@plt>
movss  0x4(%rsp),%xmm0
call   22b0 <catanhf@plt>
movss  0x4(%rsp),%xmm0
call   22c0 <catanhl@plt>
movss  0x4(%rsp),%xmm0
call   2210 <ccos@plt>
movss  0x4(%rsp),%xmm0
call   2160 <ccosf@plt>
movss  0x4(%rsp),%xmm0
call   2140 <ccosl@plt>
movss  0x4(%rsp),%xmm0
call   2130 <ccosh@plt>
movss  0x4(%rsp),%xmm0
call   21c0 <ccoshf@plt>
movss  0x4(%rsp),%xmm0
call   21d0 <ccoshl@plt>
movss  0x4(%rsp),%xmm0
call   2270 <cexp@plt>
movss  0x4(%rsp),%xmm0
call   22a0 <cexpf@plt>
movss  0x4(%rsp),%xmm0
call   2290 <cexpl@plt>
movss  0x4(%rsp),%xmm0
call   2260 <cimag@plt>
movss  0x4(%rsp),%xmm0
call   2440 <cimagf@plt>
movss  0x4(%rsp),%xmm0
call   23f0 <cimagl@plt>
movss  0x4(%rsp),%xmm0
call   2150 <conj@plt>
movss  0x4(%rsp),%xmm0
call   20c0 <conjf@plt>
movss  0x4(%rsp),%xmm0
call   2060 <conjl@plt>
movss  0x4(%rsp),%xmm0
call   23a0 <clog@plt>
movss  0x4(%rsp),%xmm0
call   2080 <clogf@plt>
movss  0x4(%rsp),%xmm0
call   20b0 <clogl@plt>
movss  0x4(%rsp),%xmm0
call   2370 <cproj@plt>
movss  0x4(%rsp),%xmm0
call   21a0 <cprojf@plt>
movss  0x4(%rsp),%xmm0
call   2180 <cprojl@plt>
movss  0x4(%rsp),%xmm0
movaps %xmm0,%xmm1
call   2040 <cpow@plt>
movss  0x4(%rsp),%xmm0
movaps %xmm0,%xmm1
call   2340 <cpowf@plt>
movss  0x4(%rsp),%xmm0
movaps %xmm0,%xmm1
call   2360 <cpowl@plt>
movss  0x4(%rsp),%xmm0
call   21f0 <creal@plt>
movss  0x4(%rsp),%xmm0
call   2390 <crealf@plt>
movss  0x4(%rsp),%xmm0
call   2410 <creall@plt>
movss  0x4(%rsp),%xmm0
call   2120 <csin@plt>
movss  0x4(%rsp),%xmm0
call   22e0 <csinf@plt>
movss  0x4(%rsp),%xmm0
call   22d0 <csinl@plt>
movss  0x4(%rsp),%xmm0
call   2320 <csinh@plt>
movss  0x4(%rsp),%xmm0
call   2050 <csinhf@plt>
movss  0x4(%rsp),%xmm0
call   20e0 <csinhl@plt>
movss  0x4(%rsp),%xmm0
call   2420 <csqrt@plt>
movss  0x4(%rsp),%xmm0
call   2400 <csqrtf@plt>
movss  0x4(%rsp),%xmm0
call   2380 <csqrtl@plt>
movss  0x4(%rsp),%xmm0
call   2250 <ctan@plt>
movss  0x4(%rsp),%xmm0
call   2300 <ctanf@plt>
movss  0x4(%rsp),%xmm0
call   2310 <ctanl@plt>
movss  0x4(%rsp),%xmm0
call   22f0 <ctanh@plt>
movss  0x4(%rsp),%xmm0
call   23d0 <ctanhf@plt>
movss  0x4(%rsp),%xmm0
pop    %rax
jmp    23b0 <ctanhl@plt>

LLVM IR (-O0):
define void @foo(float %0) {
%2 = alloca float
store float %0, float* %2
%3 = load float, float* %2
%4 = call i32 @cabs(float %3)
%5 = load float, float* %2
%6 = call i32 @cabsf(float %5)
%7 = load float, float* %2
%8 = call i32 @cabsl(float %7)
%9 = load float, float* %2
%10 = call i32 @cacos(float %9)
%11 = load float, float* %2
%12 = call i32 @cacosf(float %11)
%13 = load float, float* %2
%14 = call i32 @cacosl(float %13)
%15 = load float, float* %2
%16 = call i32 @cacosh(float %15)
%17 = load float, float* %2
%18 = call i32 @cacoshf(float %17)
%19 = load float, float* %2
%20 = call i32 @cacoshl(float %19)
%21 = load float, float* %2
%22 = call i32 @carg(float %21)
%23 = load float, float* %2
%24 = call i32 @cargf(float %23)
%25 = load float, float* %2
%26 = call i32 @cargl(float %25)
%27 = load float, float* %2
%28 = call i32 @casin(float %27)
%29 = load float, float* %2
%30 = call i32 @casinf(float %29)
%31 = load float, float* %2
%32 = call i32 @casinl(float %31)
%33 = load float, float* %2
%34 = call i32 @casinh(float %33)
%35 = load float, float* %2
%36 = call i32 @casinhf(float %35)
%37 = load float, float* %2
%38 = call i32 @casinhl(float %37)
%39 = load float, float* %2
%40 = call i32 @catan(float %39)
%41 = load float, float* %2
%42 = call i32 @catanf(float %41)
%43 = load float, float* %2
%44 = call i32 @catanl(float %43)
%45 = load float, float* %2
%46 = call i32 @catanh(float %45)
%47 = load float, float* %2
%48 = call i32 @catanhf(float %47)
%49 = load float, float* %2
%50 = call i32 @catanhl(float %49)
%51 = load float, float* %2
%52 = call i32 @ccos(float %51)
%53 = load float, float* %2
%54 = call i32 @ccosf(float %53)
%55 = load float, float* %2
%56 = call i32 @ccosl(float %55)
%57 = load float, float* %2
%58 = call i32 @ccosh(float %57)
%59 = load float, float* %2
%60 = call i32 @ccoshf(float %59)
%61 = load float, float* %2
%62 = call i32 @ccoshl(float %61)
%63 = load float, float* %2
%64 = call i32 @cexp(float %63)
%65 = load float, float* %2
%66 = call i32 @cexpf(float %65)
%67 = load float, float* %2
%68 = call i32 @cexpl(float %67)
%69 = load float, float* %2
%70 = call i32 @cimag(float %69)
%71 = load float, float* %2
%72 = call i32 @cimagf(float %71)
%73 = load float, float* %2
%74 = call i32 @cimagl(float %73)
%75 = load float, float* %2
%76 = call i32 @conj(float %75)
%77 = load float, float* %2
%78 = call i32 @conjf(float %77)
%79 = load float, float* %2
%80 = call i32 @conjl(float %79)
%81 = load float, float* %2
%82 = call i32 @clog(float %81)
%83 = load float, float* %2
%84 = call i32 @clogf(float %83)
%85 = load float, float* %2
%86 = call i32 @clogl(float %85)
%87 = load float, float* %2
%88 = call i32 @cproj(float %87)
%89 = load float, float* %2
%90 = call i32 @cprojf(float %89)
%91 = load float, float* %2
%92 = call i32 @cprojl(float %91)
%93 = load float, float* %2
%94 = load float, float* %2
%95 = call i32 @cpow(float %93, float %94)
%96 = load float, float* %2
%97 = load float, float* %2
%98 = call i32 @cpowf(float %96, float %97)
%99 = load float, float* %2
%100 = load float, float* %2
%101 = call i32 @cpowl(float %99, float %100)
%102 = load float, float* %2
%103 = call i32 @creal(float %102)
%104 = load float, float* %2
%105 = call i32 @crealf(float %104)
%106 = load float, float* %2
%107 = call i32 @creall(float %106)
%108 = load float, float* %2
%109 = call i32 @csin(float %108)
%110 = load float, float* %2
%111 = call i32 @csinf(float %110)
%112 = load float, float* %2
%113 = call i32 @csinl(float %112)
%114 = load float, float* %2
%115 = call i32 @csinh(float %114)
%116 = load float, float* %2
%117 = call i32 @csinhf(float %116)
%118 = load float, float* %2
%119 = call i32 @csinhl(float %118)
%120 = load float, float* %2
%121 = call i32 @csqrt(float %120)
%122 = load float, float* %2
%123 = call i32 @csqrtf(float %122)
%124 = load float, float* %2
%125 = call i32 @csqrtl(float %124)
%126 = load float, float* %2
%127 = call i32 @ctan(float %126)
%128 = load float, float* %2
%129 = call i32 @ctanf(float %128)
%130 = load float, float* %2
%131 = call i32 @ctanl(float %130)
%132 = load float, float* %2
%133 = call i32 @ctanh(float %132)
%134 = load float, float* %2
%135 = call i32 @ctanhf(float %134)
%136 = load float, float* %2
%137 = call i32 @ctanhl(float %136)
ret void
}

LLVM IR (-O2):
define void @foo(float %0) {
%2 = tail call i32 @cabs(float %0)
%3 = tail call i32 @cabsf(float %0)
%4 = tail call i32 @cabsl(float %0)
%5 = tail call i32 @cacos(float %0)
%6 = tail call i32 @cacosf(float %0)
%7 = tail call i32 @cacosl(float %0)
%8 = tail call i32 @cacosh(float %0)
%9 = tail call i32 @cacoshf(float %0)
%10 = tail call i32 @cacoshl(float %0)
%11 = tail call i32 @carg(float %0)
%12 = tail call i32 @cargf(float %0)
%13 = tail call i32 @cargl(float %0)
%14 = tail call i32 @casin(float %0)
%15 = tail call i32 @casinf(float %0)
%16 = tail call i32 @casinl(float %0)
%17 = tail call i32 @casinh(float %0)
%18 = tail call i32 @casinhf(float %0)
%19 = tail call i32 @casinhl(float %0)
%20 = tail call i32 @catan(float %0)
%21 = tail call i32 @catanf(float %0)
%22 = tail call i32 @catanl(float %0)
%23 = tail call i32 @catanh(float %0)
%24 = tail call i32 @catanhf(float %0)
%25 = tail call i32 @catanhl(float %0)
%26 = tail call i32 @ccos(float %0)
%27 = tail call i32 @ccosf(float %0)
%28 = tail call i32 @ccosl(float %0)
%29 = tail call i32 @ccosh(float %0)
%30 = tail call i32 @ccoshf(float %0)
%31 = tail call i32 @ccoshl(float %0)
%32 = tail call i32 @cexp(float %0)
%33 = tail call i32 @cexpf(float %0)
%34 = tail call i32 @cexpl(float %0)
%35 = tail call i32 @cimag(float %0)
%36 = tail call i32 @cimagf(float %0)
%37 = tail call i32 @cimagl(float %0)
%38 = tail call i32 @conj(float %0)
%39 = tail call i32 @conjf(float %0)
%40 = tail call i32 @conjl(float %0)
%41 = tail call i32 @clog(float %0)
%42 = tail call i32 @clogf(float %0)
%43 = tail call i32 @clogl(float %0)
%44 = tail call i32 @cproj(float %0)
%45 = tail call i32 @cprojf(float %0)
%46 = tail call i32 @cprojl(float %0)
%47 = tail call i32 @cpow(float %0, float %0)
%48 = tail call i32 @cpowf(float %0, float %0)
%49 = tail call i32 @cpowl(float %0, float %0)
%50 = tail call i32 @creal(float %0)
%51 = tail call i32 @crealf(float %0)
%52 = tail call i32 @creall(float %0)
%53 = tail call i32 @csin(float %0)
%54 = tail call i32 @csinf(float %0)
%55 = tail call i32 @csinl(float %0)
%56 = tail call i32 @csinh(float %0)
%57 = tail call i32 @csinhf(float %0)
%58 = tail call i32 @csinhl(float %0)
%59 = tail call i32 @csqrt(float %0)
%60 = tail call i32 @csqrtf(float %0)
%61 = tail call i32 @csqrtl(float %0)
%62 = tail call i32 @ctan(float %0)
%63 = tail call i32 @ctanf(float %0)
%64 = tail call i32 @ctanl(float %0)
%65 = tail call i32 @ctanh(float %0)
%66 = tail call i32 @ctanhf(float %0)
%67 = tail call i32 @ctanhl(float %0)
ret void
}