int main(void) {
  float _Complex fc = 3.0F + 4.0iF;
  double _Complex dc = 3.0 + 4.0i;
  long double _Complex ldc = 3.0L + 4.0iL;
  if (cabsf(fc) != 5.0F)
    link_error();
  if (__builtin_cabsf(fc) != 5.0F)
    link_error();
  if (cabsf(3.0F + 4.0iF) != 5.0F)
    link_failure();
  if (__builtin_cabsf(3.0F + 4.0iF) != 5.0F)
    link_failure();
  if (cabs(dc) != 5.0)
    link_error();
  if (__builtin_cabs(dc) != 5.0)
    link_error();
  if (cabs(3.0 + 4.0i) != 5.0)
    link_failure();
  if (__builtin_cabs(3.0 + 4.0i) != 5.0)
    link_failure();
  if (cabsl(ldc) != 5.0L)
    link_error();
  if (__builtin_cabsl(ldc) != 5.0L)
    link_error();
  if (cabsl(3.0L + 4.0iL) != 5.0L)
    link_failure();
  if (__builtin_cabsl(3.0L + 4.0iL) != 5.0L)
    link_failure();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x40400000,-0x10(%rbp)
movl   $0x40800000,-0xc(%rbp)
movabs $0x4008000000000000,%rax
mov    %rax,-0x20(%rbp)
movabs $0x4010000000000000,%rax
mov    %rax,-0x18(%rbp)
flds   0xe72(%rip)
fstpt  -0x40(%rbp)
flds   0xe6d(%rip)
fstpt  -0x30(%rbp)
movss  -0x10(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  %xmm1,-0x48(%rbp)
movss  %xmm0,-0x44(%rbp)
movsd  -0x48(%rbp),%xmm0
call   1050 <cabsf@plt>
movss  0xe3c(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    11d8 <main+0x88>
jp     11d8 <main+0x88>
jmp    11df <main+0x8f>
mov    $0x0,%al
call   1070 <link_error@plt>
movss  -0x10(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
movss  %xmm1,-0x50(%rbp)
movss  %xmm0,-0x4c(%rbp)
movsd  -0x50(%rbp),%xmm0
call   1050 <cabsf@plt>
movss  0xdfb(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    1219 <main+0xc9>
jp     1219 <main+0xc9>
jmp    1220 <main+0xd0>
mov    $0x0,%al
call   1070 <link_error@plt>
movl   $0x40400000,-0x58(%rbp)
movl   $0x40800000,-0x54(%rbp)
movsd  -0x58(%rbp),%xmm0
call   1050 <cabsf@plt>
movss  0xdc0(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    1254 <main+0x104>
jp     1254 <main+0x104>
jmp    125b <main+0x10b>
mov    $0x0,%al
call   1060 <link_failure@plt>
movl   $0x40400000,-0x60(%rbp)
movl   $0x40800000,-0x5c(%rbp)
movsd  -0x60(%rbp),%xmm0
call   1050 <cabsf@plt>
movss  0xd85(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    128f <main+0x13f>
jp     128f <main+0x13f>
jmp    1296 <main+0x146>
mov    $0x0,%al
call   1060 <link_failure@plt>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x70(%rbp)
movsd  %xmm0,-0x68(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
call   1030 <cabs@plt>
movsd  0xd4f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12d6 <main+0x186>
jp     12d6 <main+0x186>
jmp    12dd <main+0x18d>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x80(%rbp)
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
call   1030 <cabs@plt>
movsd  0xd08(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    131d <main+0x1cd>
jp     131d <main+0x1cd>
jmp    1324 <main+0x1d4>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  0xcf4(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xcdc(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm1
ff
call   1030 <cabs@plt>
movsd  0xcaf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1376 <main+0x226>
jp     1376 <main+0x226>
jmp    137d <main+0x22d>
mov    $0x0,%al
call   1060 <link_failure@plt>
movsd  0xc9b(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xc83(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
call   1030 <cabs@plt>
movsd  0xc56(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    13cf <main+0x27f>
jp     13cf <main+0x27f>
jmp    13d6 <main+0x286>
mov    $0x0,%al
call   1060 <link_failure@plt>
fldt   -0x40(%rbp)
fldt   -0x30(%rbp)
fxch   %st(1)
fstpt  -0xc0(%rbp)
fstpt  -0xb0(%rbp)
movaps -0xc0(%rbp),%xmm0
movaps -0xb0(%rbp),%xmm1
mov    %rsp,%rax
movaps %xmm1,0x10(%rax)
movaps %xmm0,(%rax)
call   1040 <cabsl@plt>
fld    %st(0)
fstp   %st(0)
flds   0xbef(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1428 <main+0x2d8>
jp     1428 <main+0x2d8>
jmp    142f <main+0x2df>
mov    $0x0,%al
call   1070 <link_error@plt>
fldt   -0x40(%rbp)
fldt   -0x30(%rbp)
fxch   %st(1)
fstpt  -0xe0(%rbp)
fstpt  -0xd0(%rbp)
movaps -0xe0(%rbp),%xmm0
movaps -0xd0(%rbp),%xmm1
mov    %rsp,%rax
movaps %xmm1,0x10(%rax)
movaps %xmm0,(%rax)
call   1040 <cabsl@plt>
fld    %st(0)
fstp   %st(0)
flds   0xb96(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1481 <main+0x331>
jp     1481 <main+0x331>
jmp    1488 <main+0x338>
mov    $0x0,%al
call   1070 <link_error@plt>
flds   0xb76(%rip)
fstpt  -0x100(%rbp)
flds   0xb6e(%rip)
fstpt  -0xf0(%rbp)
movaps -0x100(%rbp),%xmm0
movaps -0xf0(%rbp),%xmm1
mov    %rsp,%rax
movaps %xmm1,0x10(%rax)
movaps %xmm0,(%rax)
call   1040 <cabsl@plt>
fld    %st(0)
fstp   %st(0)
flds   0xb39(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    14de <main+0x38e>
jp     14de <main+0x38e>
jmp    14e5 <main+0x395>
mov    $0x0,%al
call   1060 <link_failure@plt>
flds   0xb19(%rip)
fstpt  -0x120(%rbp)
flds   0xb11(%rip)
fstpt  -0x110(%rbp)
movaps -0x120(%rbp),%xmm0
movaps -0x110(%rbp),%xmm1
mov    %rsp,%rax
movaps %xmm1,0x10(%rax)
movaps %xmm0,(%rax)
call   1040 <cabsl@plt>
fld    %st(0)
fstp   %st(0)
flds   0xadc(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    153b <main+0x3eb>
jp     153b <main+0x3eb>
jmp    1542 <main+0x3f2>
mov    $0x0,%al
call   1060 <link_failure@plt>
xor    %eax,%eax
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0xd8,%rsp
movaps 0xea2(%rip),%xmm0
call   1050 <cabsf@plt>
ucomiss 0xea6(%rip),%xmm0
jne    116e <main+0x1e>
jnp    1175 <main+0x25>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps 0xe84(%rip),%xmm0
call   1050 <cabsf@plt>
ucomiss 0xe88(%rip),%xmm0
jne    118c <main+0x3c>
jnp    1193 <main+0x43>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps 0xe66(%rip),%xmm0
call   1050 <cabsf@plt>
ucomiss 0xe6a(%rip),%xmm0
jne    11aa <main+0x5a>
jnp    11b1 <main+0x61>
xor    %eax,%eax
call   1060 <link_failure@plt>
movaps 0xe48(%rip),%xmm0
call   1050 <cabsf@plt>
ucomiss 0xe4c(%rip),%xmm0
jne    11c8 <main+0x78>
jnp    11cf <main+0x7f>
xor    %eax,%eax
call   1060 <link_failure@plt>
movsd  0xe49(%rip),%xmm0
movsd  0xe49(%rip),%xmm1
call   1030 <cabs@plt>
ucomisd 0xe44(%rip),%xmm0
jne    11f0 <main+0xa0>
jnp    11f7 <main+0xa7>
xor    %eax,%eax
call   1070 <link_error@plt>
movsd  0xe21(%rip),%xmm0
movsd  0xe21(%rip),%xmm1
call   1030 <cabs@plt>
ucomisd 0xe1c(%rip),%xmm0
jne    1218 <main+0xc8>
jnp    121f <main+0xcf>
xor    %eax,%eax
call   1070 <link_error@plt>
movsd  0xdf9(%rip),%xmm0
movsd  0xdf9(%rip),%xmm1
call   1030 <cabs@plt>
ucomisd 0xdf4(%rip),%xmm0
jne    1240 <main+0xf0>
jnp    1247 <main+0xf7>
xor    %eax,%eax
call   1060 <link_failure@plt>
movsd  0xdd1(%rip),%xmm0
movsd  0xdd1(%rip),%xmm1
call   1030 <cabs@plt>
ucomisd 0xdcc(%rip),%xmm0
jne    1268 <main+0x118>
jnp    126f <main+0x11f>
xor    %eax,%eax
call   1060 <link_failure@plt>
flds   0xd9f(%rip)
fld    %st(0)
fstpt  0x44(%rsp)
fstpt  0xb0(%rsp)
flds   0xd90(%rip)
fld    %st(0)
fstpt  0x38(%rsp)
fstpt  0xc0(%rsp)
movaps 0xb0(%rsp),%xmm0
movaps 0xc0(%rsp),%xmm1
movaps %xmm1,0x10(%rsp)
movaps %xmm0,(%rsp)
call   1040 <cabsl@plt>
flds   0xd57(%rip)
fld    %st(0)
fstpt  0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    12c9 <main+0x179>
jnp    12d0 <main+0x180>
xor    %eax,%eax
call   1070 <link_error@plt>
fldt   0x44(%rsp)
fstpt  0x90(%rsp)
fldt   0x38(%rsp)
fstpt  0xa0(%rsp)
movaps 0x90(%rsp),%xmm0
movaps 0xa0(%rsp),%xmm1
movaps %xmm1,0x10(%rsp)
movaps %xmm0,(%rsp)
call   1040 <cabsl@plt>
fldt   0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1312 <main+0x1c2>
jnp    1319 <main+0x1c9>
xor    %eax,%eax
call   1070 <link_error@plt>
fldt   0x44(%rsp)
fstpt  0x70(%rsp)
fldt   0x38(%rsp)
fstpt  0x80(%rsp)
movaps 0x70(%rsp),%xmm0
movaps 0x80(%rsp),%xmm1
movaps %xmm1,0x10(%rsp)
movaps %xmm0,(%rsp)
call   1040 <cabsl@plt>
fldt   0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1355 <main+0x205>
jnp    135c <main+0x20c>
xor    %eax,%eax
call   1060 <link_failure@plt>
fldt   0x44(%rsp)
fstpt  0x50(%rsp)
fldt   0x38(%rsp)
fstpt  0x60(%rsp)
movaps 0x50(%rsp),%xmm0
movaps 0x60(%rsp),%xmm1
movaps %xmm1,0x10(%rsp)
movaps %xmm0,(%rsp)
call   1040 <cabsl@plt>
fldt   0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1392 <main+0x242>
jnp    1399 <main+0x249>
xor    %eax,%eax
call   1060 <link_failure@plt>
xor    %eax,%eax
add    $0xd8,%rsp
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca { float, float }
%3 = alloca { double, double }
%4 = alloca { x86_fp80, x86_fp80 }
%5 = alloca { float, float }
%6 = alloca { float, float }
%7 = alloca { float, float }
%8 = alloca { float, float }
%9 = alloca { double, double }
%10 = alloca { double, double }
%11 = alloca { double, double }
%12 = alloca { double, double }
%13 = alloca { x86_fp80, x86_fp80 }
%14 = alloca { x86_fp80, x86_fp80 }
%15 = alloca { x86_fp80, x86_fp80 }
%16 = alloca { x86_fp80, x86_fp80 }
store i32 0, i32* %1
%17 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 0
%18 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 1
store float 3.000000e+00, float* %17
store float 4.000000e+00, float* %18
%19 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 0
%20 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 1
store double 3.000000e+00, double* %19
store double 4.000000e+00, double* %20
%21 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 0
%22 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %21
store x86_fp80 0xK40018000000000000000, x86_fp80* %22
%23 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 0
%24 = load float, float* %23
%25 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 1
%26 = load float, float* %25
%27 = getelementptr inbounds { float, float }, { float, float }* %5, i32 0, i32 0
%28 = getelementptr inbounds { float, float }, { float, float }* %5, i32 0, i32 1
store float %24, float* %27
store float %26, float* %28
%29 = bitcast { float, float }* %5 to <2 x float>*
%30 = load <2 x float>, <2 x float>* %29
%31 = call float @cabsf(<2 x float> %30)
%32 = fcmp une float %31, 5.000000e+00
br i1 %32, label %33, label %35
33: ; preds = %0
%34 = call i32 (...) @link_error()
br label %35
35: ; preds = %33, %0
%36 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 0
%37 = load float, float* %36
%38 = getelementptr inbounds { float, float }, { float, float }* %2, i32 0, i32 1
%39 = load float, float* %38
%40 = getelementptr inbounds { float, float }, { float, float }* %6, i32 0, i32 0
%41 = getelementptr inbounds { float, float }, { float, float }* %6, i32 0, i32 1
store float %37, float* %40
store float %39, float* %41
%42 = bitcast { float, float }* %6 to <2 x float>*
%43 = load <2 x float>, <2 x float>* %42
%44 = call float @cabsf(<2 x float> %43)
%45 = fcmp une float %44, 5.000000e+00
br i1 %45, label %46, label %48
46: ; preds = %35
%47 = call i32 (...) @link_error()
br label %48
48: ; preds = %46, %35
%49 = getelementptr inbounds { float, float }, { float, float }* %7, i32 0, i32 0
%50 = getelementptr inbounds { float, float }, { float, float }* %7, i32 0, i32 1
store float 3.000000e+00, float* %49
store float 4.000000e+00, float* %50
%51 = bitcast { float, float }* %7 to <2 x float>*
%52 = load <2 x float>, <2 x float>* %51
%53 = call float @cabsf(<2 x float> %52)
%54 = fcmp une float %53, 5.000000e+00
br i1 %54, label %55, label %57
55: ; preds = %48
%56 = call i32 (...) @link_failure()
br label %57
57: ; preds = %55, %48
%58 = getelementptr inbounds { float, float }, { float, float }* %8, i32 0, i32 0
%59 = getelementptr inbounds { float, float }, { float, float }* %8, i32 0, i32 1
store float 3.000000e+00, float* %58
store float 4.000000e+00, float* %59
%60 = bitcast { float, float }* %8 to <2 x float>*
%61 = load <2 x float>, <2 x float>* %60
%62 = call float @cabsf(<2 x float> %61)
%63 = fcmp une float %62, 5.000000e+00
br i1 %63, label %64, label %66
64: ; preds = %57
%65 = call i32 (...) @link_failure()
br label %66
66: ; preds = %64, %57
%67 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 0
%68 = load double, double* %67
%69 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 1
%70 = load double, double* %69
%71 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%72 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
store double %68, double* %71
store double %70, double* %72
%73 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%74 = load double, double* %73
%75 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
%76 = load double, double* %75
%77 = call double @cabs(double %74, double %76)
%78 = fcmp une double %77, 5.000000e+00
br i1 %78, label %79, label %81
79: ; preds = %66
%80 = call i32 (...) @link_error()
br label %81
81: ; preds = %79, %66
%82 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 0
%83 = load double, double* %82
%84 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 1
%85 = load double, double* %84
%86 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%87 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
store double %83, double* %86
store double %85, double* %87
%88 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%89 = load double, double* %88
%90 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
%91 = load double, double* %90
%92 = call double @cabs(double %89, double %91)
%93 = fcmp une double %92, 5.000000e+00
br i1 %93, label %94, label %96
94: ; preds = %81
%95 = call i32 (...) @link_error()
br label %96
96: ; preds = %94, %81
%97 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 0
%98 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 1
store double 3.000000e+00, double* %97
store double 4.000000e+00, double* %98
%99 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 0
%100 = load double, double* %99
%101 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 1
%102 = load double, double* %101
%103 = call double @cabs(double %100, double %102)
%104 = fcmp une double %103, 5.000000e+00
br i1 %104, label %105, label %107
105: ; preds = %96
%106 = call i32 (...) @link_failure()
br label %107
107: ; preds = %105, %96
%108 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 0
%109 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 1
store double 3.000000e+00, double* %108
store double 4.000000e+00, double* %109
%110 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 0
%111 = load double, double* %110
%112 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 1
%113 = load double, double* %112
%114 = call double @cabs(double %111, double %113)
%115 = fcmp une double %114, 5.000000e+00
br i1 %115, label %116, label %118
116: ; preds = %107
%117 = call i32 (...) @link_failure()
br label %118
118: ; preds = %116, %107
%119 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 0
%120 = load x86_fp80, x86_fp80* %119
%121 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 1
%122 = load x86_fp80, x86_fp80* %121
%123 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %13, i32 0, i32 0
%124 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %13, i32 0, i32 1
store x86_fp80 %120, x86_fp80* %123
store x86_fp80 %122, x86_fp80* %124
%125 = call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %13)
%126 = fcmp une x86_fp80 %125, 0xK4001A000000000000000
br i1 %126, label %127, label %129
127: ; preds = %118
%128 = call i32 (...) @link_error()
br label %129
129: ; preds = %127, %118
%130 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 0
%131 = load x86_fp80, x86_fp80* %130
%132 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i32 0, i32 1
%133 = load x86_fp80, x86_fp80* %132
%134 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %14, i32 0, i32 0
%135 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %14, i32 0, i32 1
store x86_fp80 %131, x86_fp80* %134
store x86_fp80 %133, x86_fp80* %135
%136 = call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %14)
%137 = fcmp une x86_fp80 %136, 0xK4001A000000000000000
br i1 %137, label %138, label %140
138: ; preds = %129
%139 = call i32 (...) @link_error()
br label %140
140: ; preds = %138, %129
%141 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %15, i32 0, i32 0
%142 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %15, i32 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %141
store x86_fp80 0xK40018000000000000000, x86_fp80* %142
%143 = call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %15)
%144 = fcmp une x86_fp80 %143, 0xK4001A000000000000000
br i1 %144, label %145, label %147
145: ; preds = %140
%146 = call i32 (...) @link_failure()
br label %147
147: ; preds = %145, %140
%148 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %16, i32 0, i32 0
%149 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %16, i32 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %148
store x86_fp80 0xK40018000000000000000, x86_fp80* %149
%150 = call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %16)
%151 = fcmp une x86_fp80 %150, 0xK4001A000000000000000
br i1 %151, label %152, label %154
152: ; preds = %147
%153 = call i32 (...) @link_failure()
br label %154
154: ; preds = %152, %147
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = alloca { x86_fp80, x86_fp80 }
%2 = alloca { x86_fp80, x86_fp80 }
%3 = alloca { x86_fp80, x86_fp80 }
%4 = alloca { x86_fp80, x86_fp80 }
%5 = tail call float @cabsf(<2 x float> <float 3.000000e+00, float 4.000000e+00>)
%6 = fcmp une float %5, 5.000000e+00
br i1 %6, label %7, label %9
7: ; preds = %0
%8 = tail call i32 (...) @link_error()
br label %9
9: ; preds = %7, %0
%10 = tail call float @cabsf(<2 x float> <float 3.000000e+00, float 4.000000e+00>)
%11 = fcmp une float %10, 5.000000e+00
br i1 %11, label %12, label %14
12: ; preds = %9
%13 = tail call i32 (...) @link_error()
br label %14
14: ; preds = %12, %9
%15 = tail call float @cabsf(<2 x float> <float 3.000000e+00, float 4.000000e+00>)
%16 = fcmp une float %15, 5.000000e+00
br i1 %16, label %17, label %19
17: ; preds = %14
%18 = tail call i32 (...) @link_failure()
br label %19
19: ; preds = %17, %14
%20 = tail call float @cabsf(<2 x float> <float 3.000000e+00, float 4.000000e+00>)
%21 = fcmp une float %20, 5.000000e+00
br i1 %21, label %22, label %24
22: ; preds = %19
%23 = tail call i32 (...) @link_failure()
br label %24
24: ; preds = %22, %19
%25 = tail call double @cabs(double 3.000000e+00, double 4.000000e+00)
%26 = fcmp une double %25, 5.000000e+00
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = tail call i32 (...) @link_error()
br label %29
29: ; preds = %27, %24
%30 = tail call double @cabs(double 3.000000e+00, double 4.000000e+00)
%31 = fcmp une double %30, 5.000000e+00
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = tail call i32 (...) @link_error()
br label %34
34: ; preds = %32, %29
%35 = tail call double @cabs(double 3.000000e+00, double 4.000000e+00)
%36 = fcmp une double %35, 5.000000e+00
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = tail call i32 (...) @link_failure()
br label %39
39: ; preds = %37, %34
%40 = tail call double @cabs(double 3.000000e+00, double 4.000000e+00)
%41 = fcmp une double %40, 5.000000e+00
br i1 %41, label %42, label %44
42: ; preds = %39
%43 = tail call i32 (...) @link_failure()
br label %44
44: ; preds = %42, %39
%45 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %1, i64 0, i32 0
%46 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %1, i64 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %45
store x86_fp80 0xK40018000000000000000, x86_fp80* %46
%47 = tail call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %1)
%48 = fcmp une x86_fp80 %47, 0xK4001A000000000000000
br i1 %48, label %49, label %51
49: ; preds = %44
%50 = tail call i32 (...) @link_error()
br label %51
51: ; preds = %49, %44
%52 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %2, i64 0, i32 0
%53 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %2, i64 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %52
store x86_fp80 0xK40018000000000000000, x86_fp80* %53
%54 = tail call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %2)
%55 = fcmp une x86_fp80 %54, 0xK4001A000000000000000
br i1 %55, label %56, label %58
56: ; preds = %51
%57 = tail call i32 (...) @link_error()
br label %58
58: ; preds = %56, %51
%59 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %3, i64 0, i32 0
%60 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %3, i64 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %59
store x86_fp80 0xK40018000000000000000, x86_fp80* %60
%61 = tail call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %3)
%62 = fcmp une x86_fp80 %61, 0xK4001A000000000000000
br i1 %62, label %63, label %65
63: ; preds = %58
%64 = tail call i32 (...) @link_failure()
br label %65
65: ; preds = %63, %58
%66 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i64 0, i32 0
%67 = getelementptr inbounds { x86_fp80, x86_fp80 }, { x86_fp80, x86_fp80 }* %4, i64 0, i32 1
store x86_fp80 0xK4000C000000000000000, x86_fp80* %66
store x86_fp80 0xK40018000000000000000, x86_fp80* %67
%68 = tail call x86_fp80 @cabsl({ x86_fp80, x86_fp80 }* byval({ x86_fp80, x86_fp80 }) align 16 %4)
%69 = fcmp une x86_fp80 %68, 0xK4001A000000000000000
br i1 %69, label %70, label %72
70: ; preds = %65
%71 = tail call i32 (...) @link_failure()
br label %72
72: ; preds = %70, %65
ret i32 0
}