void check_double(void) {
  do {
    do {
      double a = 0.0;
      double b = 0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(0.0, 0.0);
      comparec(cr, 0.0, 0.0);
      comparec(cs, 0.0, 0.0);
    } while (0);
    do {
      double a = 0.0;
      double b = -0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(0.0, -0.0);
      comparec(cr, 0.0, -0.0);
      comparec(cs, 0.0, -0.0);
    } while (0);
    do {
      double a = 0.0;
      double b = __builtin_nan("");
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(0.0, __builtin_nan(""));
      comparec(cr, 0.0, __builtin_nan(""));
      comparec(cs, 0.0, __builtin_nan(""));
    } while (0);
    do {
      double a = 0.0;
      double b = __builtin_inf();
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(0.0, __builtin_inf());
      comparec(cr, 0.0, __builtin_inf());
      comparec(cs, 0.0, __builtin_inf());
    } while (0);
    do {
      double a = -0.0;
      double b = 0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(-0.0, 0.0);
      comparec(cr, -0.0, 0.0);
      comparec(cs, -0.0, 0.0);
    } while (0);
    do {
      double a = -0.0;
      double b = -0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(-0.0, -0.0);
      comparec(cr, -0.0, -0.0);
      comparec(cs, -0.0, -0.0);
    } while (0);
    do {
      double a = -0.0;
      double b = __builtin_nan("");
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(-0.0, __builtin_nan(""));
      comparec(cr, -0.0, __builtin_nan(""));
      comparec(cs, -0.0, __builtin_nan(""));
    } while (0);
    do {
      double a = -0.0;
      double b = __builtin_inf();
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(-0.0, __builtin_inf());
      comparec(cr, -0.0, __builtin_inf());
      comparec(cs, -0.0, __builtin_inf());
    } while (0);
    do {
      double a = __builtin_nan("");
      double b = 0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(__builtin_nan(""), 0.0);
      comparec(cr, __builtin_nan(""), 0.0);
      comparec(cs, __builtin_nan(""), 0.0);
    } while (0);
    do {
      double a = __builtin_nan("");
      double b = -0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(__builtin_nan(""), -0.0);
      comparec(cr, __builtin_nan(""), -0.0);
      comparec(cs, __builtin_nan(""), -0.0);
    } while (0);
    do {
      double a = __builtin_nan("");
      double b = __builtin_nan("");
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs =
          __builtin_complex(__builtin_nan(""), __builtin_nan(""));
      comparec(cr, __builtin_nan(""), __builtin_nan(""));
      comparec(cs, __builtin_nan(""), __builtin_nan(""));
    } while (0);
    do {
      double a = __builtin_nan("");
      double b = __builtin_inf();
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs =
          __builtin_complex(__builtin_nan(""), __builtin_inf());
      comparec(cr, __builtin_nan(""), __builtin_inf());
      comparec(cs, __builtin_nan(""), __builtin_inf());
    } while (0);
    do {
      double a = __builtin_inf();
      double b = 0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(__builtin_inf(), 0.0);
      comparec(cr, __builtin_inf(), 0.0);
      comparec(cs, __builtin_inf(), 0.0);
    } while (0);
    do {
      double a = __builtin_inf();
      double b = -0.0;
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs = __builtin_complex(__builtin_inf(), -0.0);
      comparec(cr, __builtin_inf(), -0.0);
      comparec(cs, __builtin_inf(), -0.0);
    } while (0);
    do {
      double a = __builtin_inf();
      double b = __builtin_nan("");
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs =
          __builtin_complex(__builtin_inf(), __builtin_nan(""));
      comparec(cr, __builtin_inf(), __builtin_nan(""));
      comparec(cs, __builtin_inf(), __builtin_nan(""));
    } while (0);
    do {
      double a = __builtin_inf();
      double b = __builtin_inf();
      _Complex double cr = __builtin_complex(a, b);
      static _Complex double cs =
          __builtin_complex(__builtin_inf(), __builtin_inf());
      comparec(cr, __builtin_inf(), __builtin_inf());
      comparec(cs, __builtin_inf(), __builtin_inf());
    } while (0);
  } while (0);
}


x86 assembly (clang, -O0):
<check_double>:
push   %rbp
mov    %rsp,%rbp
sub    $0x400,%rsp
jmp    1120 <check_double+0x10>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x30(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
xorps  %xmm3,%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2fa9(%rip),%xmm1
movsd  0x2fa9(%rip),%xmm0
movsd  %xmm1,-0x40(%rbp)
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
xorps  %xmm3,%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    11a5 <check_double+0x95>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe4b(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm0
movsd  %xmm1,-0x60(%rbp)
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm0
movsd  %xmm1,-0x70(%rbp)
movsd  %xmm0,-0x68(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
xorps  %xmm2,%xmm2
movsd  0xe09(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2e22(%rip),%xmm1
movsd  0x2e22(%rip),%xmm0
movsd  %xmm1,-0x80(%rbp)
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
xorps  %xmm2,%xmm2
movsd  0xdd3(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1239 <check_double+0x129>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xdbc(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm1,-0xa0(%rbp)
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm1,-0xb0(%rbp)
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm1
ff
xorps  %xmm2,%xmm2
movsd  0xd59(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2d7a(%rip),%xmm1
movsd  0x2d7a(%rip),%xmm0
movsd  %xmm1,-0xc0(%rbp)
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
xorps  %xmm2,%xmm2
movsd  0xd17(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    12fd <check_double+0x1ed>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xd00(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm1,-0xe0(%rbp)
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm1,-0xf0(%rbp)
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
xorps  %xmm2,%xmm2
movsd  0xc9d(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2cc6(%rip),%xmm1
movsd  0x2cc6(%rip),%xmm0
movsd  %xmm1,-0x100(%rbp)
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm1
ff
xorps  %xmm2,%xmm2
movsd  0xc5b(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    13c1 <check_double+0x2b1>
movsd  0xc37(%rip),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x108(%rbp),%xmm1
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm1,-0x120(%rbp)
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm1,-0x130(%rbp)
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm1
ff
movsd  0xbcc(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2c12(%rip),%xmm1
movsd  0x2c12(%rip),%xmm0
movsd  %xmm1,-0x140(%rbp)
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
movsd  0xb8a(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1485 <check_double+0x375>
movsd  0xb73(%rip),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  0xb63(%rip),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x148(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm1,-0x160(%rbp)
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x160(%rbp),%xmm1
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm1,-0x170(%rbp)
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm1
ff
movsd  0xb03(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2b59(%rip),%xmm1
movsd  0x2b59(%rip),%xmm0
movsd  %xmm1,-0x180(%rbp)
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm1
ff
movsd  0xac1(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    154e <check_double+0x43e>
movsd  0xaaa(%rip),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0xaa2(%rip),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0x190(%rbp),%xmm0
ff
movsd  %xmm1,-0x1a0(%rbp)
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm1,-0x1b0(%rbp)
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  -0x1a8(%rbp),%xmm1
ff
movsd  0xa3a(%rip),%xmm2
movsd  0xa3a(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2a9b(%rip),%xmm1
movsd  0x2a9b(%rip),%xmm0
movsd  %xmm1,-0x1c0(%rbp)
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm0
ff
movsd  -0x1b8(%rbp),%xmm1
ff
movsd  0x9f3(%rip),%xmm2
movsd  0x9f3(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1621 <check_double+0x511>
movsd  0x9d7(%rip),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  0x9d7(%rip),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x1c8(%rbp),%xmm1
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  %xmm1,-0x1e0(%rbp)
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x1e0(%rbp),%xmm1
ff
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  %xmm1,-0x1f0(%rbp)
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
movsd  -0x1e8(%rbp),%xmm1
ff
movsd  0x967(%rip),%xmm2
movsd  0x96f(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x29d8(%rip),%xmm1
movsd  0x29d8(%rip),%xmm0
movsd  %xmm1,-0x200(%rbp)
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
movsd  -0x1f8(%rbp),%xmm1
ff
movsd  0x920(%rip),%xmm2
movsd  0x928(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    16f4 <check_double+0x5e4>
movsd  0x90c(%rip),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x208(%rbp),%xmm1
ff
movsd  -0x210(%rbp),%xmm0
ff
movsd  %xmm1,-0x220(%rbp)
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x220(%rbp),%xmm1
ff
movsd  -0x218(%rbp),%xmm0
ff
movsd  %xmm1,-0x230(%rbp)
ff
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x230(%rbp),%xmm0
ff
movsd  -0x228(%rbp),%xmm1
ff
movsd  0x8a1(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x291f(%rip),%xmm1
movsd  0x291f(%rip),%xmm0
movsd  %xmm1,-0x240(%rbp)
ff
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x240(%rbp),%xmm0
ff
movsd  -0x238(%rbp),%xmm1
ff
movsd  0x85f(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    17b8 <check_double+0x6a8>
movsd  0x848(%rip),%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  0x830(%rip),%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x248(%rbp),%xmm1
ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  %xmm1,-0x260(%rbp)
ff
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x260(%rbp),%xmm1
ff
movsd  -0x258(%rbp),%xmm0
ff
movsd  %xmm1,-0x270(%rbp)
ff
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x270(%rbp),%xmm0
ff
movsd  -0x268(%rbp),%xmm1
ff
movsd  0x7d8(%rip),%xmm2
movsd  0x7c8(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x2861(%rip),%xmm1
movsd  0x2861(%rip),%xmm0
movsd  %xmm1,-0x280(%rbp)
ff
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x280(%rbp),%xmm0
ff
movsd  -0x278(%rbp),%xmm1
ff
movsd  0x791(%rip),%xmm2
movsd  0x781(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    188b <check_double+0x77b>
movsd  0x775(%rip),%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
movsd  0x765(%rip),%xmm0
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x288(%rbp),%xmm1
ff
movsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm1,-0x2a0(%rbp)
ff
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x2a0(%rbp),%xmm1
ff
movsd  -0x298(%rbp),%xmm0
ff
movsd  %xmm1,-0x2b0(%rbp)
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x2b0(%rbp),%xmm0
ff
movsd  -0x2a8(%rbp),%xmm1
ff
movsd  0x705(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x27a3(%rip),%xmm1
movsd  0x27a3(%rip),%xmm0
movsd  %xmm1,-0x2c0(%rbp)
ff
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x2c0(%rbp),%xmm0
ff
movsd  -0x2b8(%rbp),%xmm1
ff
movsd  0x6c3(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1954 <check_double+0x844>
movsd  0x6ac(%rip),%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
movsd  0x6a4(%rip),%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  -0x2c8(%rbp),%xmm1
ff
movsd  -0x2d0(%rbp),%xmm0
ff
movsd  %xmm1,-0x2e0(%rbp)
ff
movsd  %xmm0,-0x2d8(%rbp)
ff
movsd  -0x2e0(%rbp),%xmm1
ff
movsd  -0x2d8(%rbp),%xmm0
ff
movsd  %xmm1,-0x2f0(%rbp)
ff
movsd  %xmm0,-0x2e8(%rbp)
ff
movsd  -0x2f0(%rbp),%xmm0
ff
movsd  -0x2e8(%rbp),%xmm1
ff
movsd  0x63c(%rip),%xmm2
movsd  0x63c(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x26e5(%rip),%xmm1
movsd  0x26e5(%rip),%xmm0
movsd  %xmm1,-0x300(%rbp)
ff
movsd  %xmm0,-0x2f8(%rbp)
ff
movsd  -0x300(%rbp),%xmm0
ff
movsd  -0x2f8(%rbp),%xmm1
ff
movsd  0x5f5(%rip),%xmm2
movsd  0x5f5(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1a27 <check_double+0x917>
movsd  0x5e1(%rip),%xmm0
movsd  %xmm0,-0x308(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x310(%rbp)
ff
movsd  -0x308(%rbp),%xmm1
ff
movsd  -0x310(%rbp),%xmm0
ff
movsd  %xmm1,-0x320(%rbp)
ff
movsd  %xmm0,-0x318(%rbp)
ff
movsd  -0x320(%rbp),%xmm1
ff
movsd  -0x318(%rbp),%xmm0
ff
movsd  %xmm1,-0x330(%rbp)
ff
movsd  %xmm0,-0x328(%rbp)
ff
movsd  -0x330(%rbp),%xmm0
ff
movsd  -0x328(%rbp),%xmm1
ff
movsd  0x576(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x262c(%rip),%xmm1
movsd  0x262c(%rip),%xmm0
movsd  %xmm1,-0x340(%rbp)
ff
movsd  %xmm0,-0x338(%rbp)
ff
movsd  -0x340(%rbp),%xmm0
ff
movsd  -0x338(%rbp),%xmm1
ff
movsd  0x534(%rip),%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1aeb <check_double+0x9db>
movsd  0x51d(%rip),%xmm0
movsd  %xmm0,-0x348(%rbp)
ff
movsd  0x4fd(%rip),%xmm0
movsd  %xmm0,-0x350(%rbp)
ff
movsd  -0x348(%rbp),%xmm1
ff
movsd  -0x350(%rbp),%xmm0
ff
movsd  %xmm1,-0x360(%rbp)
ff
movsd  %xmm0,-0x358(%rbp)
ff
movsd  -0x360(%rbp),%xmm1
ff
movsd  -0x358(%rbp),%xmm0
ff
movsd  %xmm1,-0x370(%rbp)
ff
movsd  %xmm0,-0x368(%rbp)
ff
movsd  -0x370(%rbp),%xmm0
ff
movsd  -0x368(%rbp),%xmm1
ff
movsd  0x4ad(%rip),%xmm2
movsd  0x495(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x256e(%rip),%xmm1
movsd  0x256e(%rip),%xmm0
movsd  %xmm1,-0x380(%rbp)
ff
movsd  %xmm0,-0x378(%rbp)
ff
movsd  -0x380(%rbp),%xmm0
ff
movsd  -0x378(%rbp),%xmm1
ff
movsd  0x466(%rip),%xmm2
movsd  0x44e(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1bbe <check_double+0xaae>
movsd  0x44a(%rip),%xmm0
movsd  %xmm0,-0x388(%rbp)
ff
movsd  0x432(%rip),%xmm0
movsd  %xmm0,-0x390(%rbp)
ff
movsd  -0x388(%rbp),%xmm1
ff
movsd  -0x390(%rbp),%xmm0
ff
movsd  %xmm1,-0x3a0(%rbp)
ff
movsd  %xmm0,-0x398(%rbp)
ff
movsd  -0x3a0(%rbp),%xmm1
ff
movsd  -0x398(%rbp),%xmm0
ff
movsd  %xmm1,-0x3b0(%rbp)
ff
movsd  %xmm0,-0x3a8(%rbp)
ff
movsd  -0x3b0(%rbp),%xmm0
ff
movsd  -0x3a8(%rbp),%xmm1
ff
movsd  0x3da(%rip),%xmm2
movsd  0x3ca(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x24ab(%rip),%xmm1
movsd  0x24ab(%rip),%xmm0
movsd  %xmm1,-0x3c0(%rbp)
ff
movsd  %xmm0,-0x3b8(%rbp)
ff
movsd  -0x3c0(%rbp),%xmm0
ff
movsd  -0x3b8(%rbp),%xmm1
ff
movsd  0x393(%rip),%xmm2
movsd  0x383(%rip),%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1c91 <check_double+0xb81>
movsd  0x377(%rip),%xmm0
movsd  %xmm0,-0x3c8(%rbp)
ff
movsd  0x367(%rip),%xmm0
movsd  %xmm0,-0x3d0(%rbp)
ff
movsd  -0x3c8(%rbp),%xmm1
ff
movsd  -0x3d0(%rbp),%xmm0
ff
movsd  %xmm1,-0x3e0(%rbp)
ff
movsd  %xmm0,-0x3d8(%rbp)
ff
movsd  -0x3e0(%rbp),%xmm1
ff
movsd  -0x3d8(%rbp),%xmm0
ff
movsd  %xmm1,-0x3f0(%rbp)
ff
movsd  %xmm0,-0x3e8(%rbp)
ff
movsd  -0x3f0(%rbp),%xmm0
ff
movsd  -0x3e8(%rbp),%xmm1
movsd  0x307(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0x23ed(%rip),%xmm1
movsd  0x23ed(%rip),%xmm0
movsd  %xmm1,-0x400(%rbp)
ff
movsd  %xmm0,-0x3f8(%rbp)
ff
movsd  -0x400(%rbp),%xmm0
ff
movsd  -0x3f8(%rbp),%xmm1
ff
movsd  0x2c5(%rip),%xmm3
movaps %xmm3,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
jmp    1d5a <check_double+0xc4a>
add    $0x400,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_double>:
push   %rax
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
xorps  %xmm3,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xec1(%rip),%xmm1
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movsd  0xea3(%rip),%xmm1
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xe99(%rip),%xmm1
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movsd  0xe7b(%rip),%xmm1
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xe71(%rip),%xmm1
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm0,%xmm0
xorps  %xmm2,%xmm2
movsd  0xe53(%rip),%xmm1
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xe2b(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xe13(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xe01(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xde9(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xdd1(%rip),%xmm0
movsd  0xdd1(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xdb4(%rip),%xmm0
movsd  0xdb4(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xd97(%rip),%xmm0
movsd  0xd9f(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xd7a(%rip),%xmm0
movsd  0xd82(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xd5f(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xd47(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xd35(%rip),%xmm0
movsd  0xd25(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xd18(%rip),%xmm0
movsd  0xd08(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xcfb(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xce3(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xccb(%rip),%xmm0
movsd  0xccb(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xcae(%rip),%xmm0
movsd  0xcae(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xc93(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xc7b(%rip),%xmm0
movaps %xmm0,%xmm2
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xc69(%rip),%xmm0
movsd  0xc51(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xc4c(%rip),%xmm0
movsd  0xc34(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xc2f(%rip),%xmm0
movsd  0xc1f(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xc12(%rip),%xmm0
movsd  0xc02(%rip),%xmm1
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xbf5(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
call   1030 <comparec@plt>
movsd  0xbdd(%rip),%xmm0
movaps %xmm0,%xmm1
movaps %xmm0,%xmm2
movaps %xmm0,%xmm3
mov    $0x4,%al
pop    %rcx
jmp    1030 <comparec@plt>

LLVM IR (-O0):
@check_double.cs = internal global { double, double } zeroinitializer
@check_double.cs.1 = internal global { double, double } { double 0.000000e+00, double -0.000000e+00 }
@check_double.cs.2 = internal global { double, double } { double 0.000000e+00, double 0x7FF8000000000000 }
@check_double.cs.3 = internal global { double, double } { double 0.000000e+00, double 0x7FF0000000000000 }
@check_double.cs.4 = internal global { double, double } { double -0.000000e+00, double 0.000000e+00 }
@check_double.cs.5 = internal global { double, double } { double -0.000000e+00, double -0.000000e+00 }
@check_double.cs.6 = internal global { double, double } { double -0.000000e+00, double 0x7FF8000000000000 }
@check_double.cs.7 = internal global { double, double } { double -0.000000e+00, double 0x7FF0000000000000 }
@check_double.cs.8 = internal global { double, double } { double 0x7FF8000000000000, double 0.000000e+00 }
@check_double.cs.9 = internal global { double, double } { double 0x7FF8000000000000, double -0.000000e+00 }
@check_double.cs.10 = internal global { double, double } { double 0x7FF8000000000000, double 0x7FF8000000000000 }
@check_double.cs.11 = internal global { double, double } { double 0x7FF8000000000000, double 0x7FF0000000000000 }
@check_double.cs.12 = internal global { double, double } { double 0x7FF0000000000000, double 0.000000e+00 }
@check_double.cs.13 = internal global { double, double } { double 0x7FF0000000000000, double -0.000000e+00 }
@check_double.cs.14 = internal global { double, double } { double 0x7FF0000000000000, double 0x7FF8000000000000 }
@check_double.cs.15 = internal global { double, double } { double 0x7FF0000000000000, double 0x7FF0000000000000 }
define void @check_double() {
%1 = alloca double
%2 = alloca double
%3 = alloca { double, double }
%4 = alloca { double, double }
%5 = alloca { double, double }
%6 = alloca double
%7 = alloca double
%8 = alloca { double, double }
%9 = alloca { double, double }
%10 = alloca { double, double }
%11 = alloca double
%12 = alloca double
%13 = alloca { double, double }
%14 = alloca { double, double }
%15 = alloca { double, double }
%16 = alloca double
%17 = alloca double
%18 = alloca { double, double }
%19 = alloca { double, double }
%20 = alloca { double, double }
%21 = alloca double
%22 = alloca double
%23 = alloca { double, double }
%24 = alloca { double, double }
%25 = alloca { double, double }
%26 = alloca double
%27 = alloca double
%28 = alloca { double, double }
%29 = alloca { double, double }
%30 = alloca { double, double }
%31 = alloca double
%32 = alloca double
%33 = alloca { double, double }
%34 = alloca { double, double }
%35 = alloca { double, double }
%36 = alloca double
%37 = alloca double
%38 = alloca { double, double }
%39 = alloca { double, double }
%40 = alloca { double, double }
%41 = alloca double
%42 = alloca double
%43 = alloca { double, double }
%44 = alloca { double, double }
%45 = alloca { double, double }
%46 = alloca double
%47 = alloca double
%48 = alloca { double, double }
%49 = alloca { double, double }
%50 = alloca { double, double }
%51 = alloca double
%52 = alloca double
%53 = alloca { double, double }
%54 = alloca { double, double }
%55 = alloca { double, double }
%56 = alloca double
%57 = alloca double
%58 = alloca { double, double }
%59 = alloca { double, double }
%60 = alloca { double, double }
%61 = alloca double
%62 = alloca double
%63 = alloca { double, double }
%64 = alloca { double, double }
%65 = alloca { double, double }
%66 = alloca double
%67 = alloca double
%68 = alloca { double, double }
%69 = alloca { double, double }
%70 = alloca { double, double }
%71 = alloca double
%72 = alloca double
%73 = alloca { double, double }
%74 = alloca { double, double }
%75 = alloca { double, double }
%76 = alloca double
%77 = alloca double
%78 = alloca { double, double }
%79 = alloca { double, double }
%80 = alloca { double, double }
br label %81
81: ; preds = %0
br label %82
82: ; preds = %81
store double 0.000000e+00, double* %1
store double 0.000000e+00, double* %2
%83 = load double, double* %1
%84 = load double, double* %2
%85 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 0
%86 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 1
store double %83, double* %85
store double %84, double* %86
%87 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 0
%88 = load double, double* %87
%89 = getelementptr inbounds { double, double }, { double, double }* %3, i32 0, i32 1
%90 = load double, double* %89
%91 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%92 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
store double %88, double* %91
store double %90, double* %92
%93 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%94 = load double, double* %93
%95 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%96 = load double, double* %95
%97 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %94, double %96, double 0.000000e+00, double 0.000000e+00)
%98 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs, i32 0, i32 0)
%99 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs, i32 0, i32 1)
%100 = getelementptr inbounds { double, double }, { double, double }* %5, i32 0, i32 0
%101 = getelementptr inbounds { double, double }, { double, double }* %5, i32 0, i32 1
store double %98, double* %100
store double %99, double* %101
%102 = getelementptr inbounds { double, double }, { double, double }* %5, i32 0, i32 0
%103 = load double, double* %102
%104 = getelementptr inbounds { double, double }, { double, double }* %5, i32 0, i32 1
%105 = load double, double* %104
%106 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %103, double %105, double 0.000000e+00, double 0.000000e+00)
br label %107
107: ; preds = %82
br label %108
108: ; preds = %107
store double 0.000000e+00, double* %6
store double -0.000000e+00, double* %7
%109 = load double, double* %6
%110 = load double, double* %7
%111 = getelementptr inbounds { double, double }, { double, double }* %8, i32 0, i32 0
%112 = getelementptr inbounds { double, double }, { double, double }* %8, i32 0, i32 1
store double %109, double* %111
store double %110, double* %112
%113 = getelementptr inbounds { double, double }, { double, double }* %8, i32 0, i32 0
%114 = load double, double* %113
%115 = getelementptr inbounds { double, double }, { double, double }* %8, i32 0, i32 1
%116 = load double, double* %115
%117 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%118 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
store double %114, double* %117
store double %116, double* %118
%119 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%120 = load double, double* %119
%121 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
%122 = load double, double* %121
%123 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %120, double %122, double 0.000000e+00, double -0.000000e+00)
%124 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.1, i32 0, i32 0)
%125 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.1, i32 0, i32 1)
%126 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%127 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
store double %124, double* %126
store double %125, double* %127
%128 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%129 = load double, double* %128
%130 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
%131 = load double, double* %130
%132 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %129, double %131, double 0.000000e+00, double -0.000000e+00)
br label %133
133: ; preds = %108
br label %134
134: ; preds = %133
store double 0.000000e+00, double* %11
store double 0x7FF8000000000000, double* %12
%135 = load double, double* %11
%136 = load double, double* %12
%137 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 0
%138 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 1
store double %135, double* %137
store double %136, double* %138
%139 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 0
%140 = load double, double* %139
%141 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 1
%142 = load double, double* %141
%143 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 0
%144 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 1
store double %140, double* %143
store double %142, double* %144
%145 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 0
%146 = load double, double* %145
%147 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 1
%148 = load double, double* %147
%149 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %146, double %148, double 0.000000e+00, double 0x7FF8000000000000)
%150 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.2, i32 0, i32 0)
%151 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.2, i32 0, i32 1)
%152 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 0
%153 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 1
store double %150, double* %152
store double %151, double* %153
%154 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 0
%155 = load double, double* %154
%156 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 1
%157 = load double, double* %156
%158 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %155, double %157, double 0.000000e+00, double 0x7FF8000000000000)
br label %159
159: ; preds = %134
br label %160
160: ; preds = %159
store double 0.000000e+00, double* %16
store double 0x7FF0000000000000, double* %17
%161 = load double, double* %16
%162 = load double, double* %17
%163 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 0
%164 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 1
store double %161, double* %163
store double %162, double* %164
%165 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 0
%166 = load double, double* %165
%167 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 1
%168 = load double, double* %167
%169 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 0
%170 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 1
store double %166, double* %169
store double %168, double* %170
%171 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 0
%172 = load double, double* %171
%173 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 1
%174 = load double, double* %173
%175 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %172, double %174, double 0.000000e+00, double 0x7FF0000000000000)
%176 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.3, i32 0, i32 0)
%177 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.3, i32 0, i32 1)
%178 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 0
%179 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 1
store double %176, double* %178
store double %177, double* %179
%180 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 0
%181 = load double, double* %180
%182 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 1
%183 = load double, double* %182
%184 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %181, double %183, double 0.000000e+00, double 0x7FF0000000000000)
br label %185
185: ; preds = %160
br label %186
186: ; preds = %185
store double -0.000000e+00, double* %21
store double 0.000000e+00, double* %22
%187 = load double, double* %21
%188 = load double, double* %22
%189 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 0
%190 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 1
store double %187, double* %189
store double %188, double* %190
%191 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 0
%192 = load double, double* %191
%193 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 1
%194 = load double, double* %193
%195 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 0
%196 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 1
store double %192, double* %195
store double %194, double* %196
%197 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 0
%198 = load double, double* %197
%199 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 1
%200 = load double, double* %199
%201 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %198, double %200, double -0.000000e+00, double 0.000000e+00)
%202 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.4, i32 0, i32 0)
%203 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.4, i32 0, i32 1)
%204 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 0
%205 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 1
store double %202, double* %204
store double %203, double* %205
%206 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 0
%207 = load double, double* %206
%208 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 1
%209 = load double, double* %208
%210 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %207, double %209, double -0.000000e+00, double 0.000000e+00)
br label %211
211: ; preds = %186
br label %212
212: ; preds = %211
store double -0.000000e+00, double* %26
store double -0.000000e+00, double* %27
%213 = load double, double* %26
%214 = load double, double* %27
%215 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 0
%216 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 1
store double %213, double* %215
store double %214, double* %216
%217 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 0
%218 = load double, double* %217
%219 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 1
%220 = load double, double* %219
%221 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 0
%222 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 1
store double %218, double* %221
store double %220, double* %222
%223 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 0
%224 = load double, double* %223
%225 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 1
%226 = load double, double* %225
%227 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %224, double %226, double -0.000000e+00, double -0.000000e+00)
%228 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.5, i32 0, i32 0)
%229 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.5, i32 0, i32 1)
%230 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 0
%231 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 1
store double %228, double* %230
store double %229, double* %231
%232 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 0
%233 = load double, double* %232
%234 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 1
%235 = load double, double* %234
%236 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %233, double %235, double -0.000000e+00, double -0.000000e+00)
br label %237
237: ; preds = %212
br label %238
238: ; preds = %237
store double -0.000000e+00, double* %31
store double 0x7FF8000000000000, double* %32
%239 = load double, double* %31
%240 = load double, double* %32
%241 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 0
%242 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 1
store double %239, double* %241
store double %240, double* %242
%243 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 0
%244 = load double, double* %243
%245 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 1
%246 = load double, double* %245
%247 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 0
%248 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 1
store double %244, double* %247
store double %246, double* %248
%249 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 0
%250 = load double, double* %249
%251 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 1
%252 = load double, double* %251
%253 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %250, double %252, double -0.000000e+00, double 0x7FF8000000000000)
%254 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.6, i32 0, i32 0)
%255 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.6, i32 0, i32 1)
%256 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 0
%257 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 1
store double %254, double* %256
store double %255, double* %257
%258 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 0
%259 = load double, double* %258
%260 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 1
%261 = load double, double* %260
%262 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %259, double %261, double -0.000000e+00, double 0x7FF8000000000000)
br label %263
263: ; preds = %238
br label %264
264: ; preds = %263
store double -0.000000e+00, double* %36
store double 0x7FF0000000000000, double* %37
%265 = load double, double* %36
%266 = load double, double* %37
%267 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 0
%268 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 1
store double %265, double* %267
store double %266, double* %268
%269 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 0
%270 = load double, double* %269
%271 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 1
%272 = load double, double* %271
%273 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 0
%274 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 1
store double %270, double* %273
store double %272, double* %274
%275 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 0
%276 = load double, double* %275
%277 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 1
%278 = load double, double* %277
%279 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %276, double %278, double -0.000000e+00, double 0x7FF0000000000000)
%280 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.7, i32 0, i32 0)
%281 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.7, i32 0, i32 1)
%282 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 0
%283 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 1
store double %280, double* %282
store double %281, double* %283
%284 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 0
%285 = load double, double* %284
%286 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 1
%287 = load double, double* %286
%288 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %285, double %287, double -0.000000e+00, double 0x7FF0000000000000)
br label %289
289: ; preds = %264
br label %290
290: ; preds = %289
store double 0x7FF8000000000000, double* %41
store double 0.000000e+00, double* %42
%291 = load double, double* %41
%292 = load double, double* %42
%293 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 0
%294 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 1
store double %291, double* %293
store double %292, double* %294
%295 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 0
%296 = load double, double* %295
%297 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 1
%298 = load double, double* %297
%299 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 0
%300 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 1
store double %296, double* %299
store double %298, double* %300
%301 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 0
%302 = load double, double* %301
%303 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 1
%304 = load double, double* %303
%305 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %302, double %304, double 0x7FF8000000000000, double 0.000000e+00)
%306 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.8, i32 0, i32 0)
%307 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.8, i32 0, i32 1)
%308 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 0
%309 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 1
store double %306, double* %308
store double %307, double* %309
%310 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 0
%311 = load double, double* %310
%312 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 1
%313 = load double, double* %312
%314 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %311, double %313, double 0x7FF8000000000000, double 0.000000e+00)
br label %315
315: ; preds = %290
br label %316
316: ; preds = %315
store double 0x7FF8000000000000, double* %46
store double -0.000000e+00, double* %47
%317 = load double, double* %46
%318 = load double, double* %47
%319 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 0
%320 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 1
store double %317, double* %319
store double %318, double* %320
%321 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 0
%322 = load double, double* %321
%323 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 1
%324 = load double, double* %323
%325 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 0
%326 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 1
store double %322, double* %325
store double %324, double* %326
%327 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 0
%328 = load double, double* %327
%329 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 1
%330 = load double, double* %329
%331 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %328, double %330, double 0x7FF8000000000000, double -0.000000e+00)
%332 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.9, i32 0, i32 0)
%333 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.9, i32 0, i32 1)
%334 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 0
%335 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 1
store double %332, double* %334
store double %333, double* %335
%336 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 0
%337 = load double, double* %336
%338 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 1
%339 = load double, double* %338
%340 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %337, double %339, double 0x7FF8000000000000, double -0.000000e+00)
br label %341
341: ; preds = %316
br label %342
342: ; preds = %341
store double 0x7FF8000000000000, double* %51
store double 0x7FF8000000000000, double* %52
%343 = load double, double* %51
%344 = load double, double* %52
%345 = getelementptr inbounds { double, double }, { double, double }* %53, i32 0, i32 0
%346 = getelementptr inbounds { double, double }, { double, double }* %53, i32 0, i32 1
store double %343, double* %345
store double %344, double* %346
%347 = getelementptr inbounds { double, double }, { double, double }* %53, i32 0, i32 0
%348 = load double, double* %347
%349 = getelementptr inbounds { double, double }, { double, double }* %53, i32 0, i32 1
%350 = load double, double* %349
%351 = getelementptr inbounds { double, double }, { double, double }* %54, i32 0, i32 0
%352 = getelementptr inbounds { double, double }, { double, double }* %54, i32 0, i32 1
store double %348, double* %351
store double %350, double* %352
%353 = getelementptr inbounds { double, double }, { double, double }* %54, i32 0, i32 0
%354 = load double, double* %353
%355 = getelementptr inbounds { double, double }, { double, double }* %54, i32 0, i32 1
%356 = load double, double* %355
%357 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %354, double %356, double 0x7FF8000000000000, double 0x7FF8000000000000)
%358 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.10, i32 0, i32 0)
%359 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.10, i32 0, i32 1)
%360 = getelementptr inbounds { double, double }, { double, double }* %55, i32 0, i32 0
%361 = getelementptr inbounds { double, double }, { double, double }* %55, i32 0, i32 1
store double %358, double* %360
store double %359, double* %361
%362 = getelementptr inbounds { double, double }, { double, double }* %55, i32 0, i32 0
%363 = load double, double* %362
%364 = getelementptr inbounds { double, double }, { double, double }* %55, i32 0, i32 1
%365 = load double, double* %364
%366 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %363, double %365, double 0x7FF8000000000000, double 0x7FF8000000000000)
br label %367
367: ; preds = %342
br label %368
368: ; preds = %367
store double 0x7FF8000000000000, double* %56
store double 0x7FF0000000000000, double* %57
%369 = load double, double* %56
%370 = load double, double* %57
%371 = getelementptr inbounds { double, double }, { double, double }* %58, i32 0, i32 0
%372 = getelementptr inbounds { double, double }, { double, double }* %58, i32 0, i32 1
store double %369, double* %371
store double %370, double* %372
%373 = getelementptr inbounds { double, double }, { double, double }* %58, i32 0, i32 0
%374 = load double, double* %373
%375 = getelementptr inbounds { double, double }, { double, double }* %58, i32 0, i32 1
%376 = load double, double* %375
%377 = getelementptr inbounds { double, double }, { double, double }* %59, i32 0, i32 0
%378 = getelementptr inbounds { double, double }, { double, double }* %59, i32 0, i32 1
store double %374, double* %377
store double %376, double* %378
%379 = getelementptr inbounds { double, double }, { double, double }* %59, i32 0, i32 0
%380 = load double, double* %379
%381 = getelementptr inbounds { double, double }, { double, double }* %59, i32 0, i32 1
%382 = load double, double* %381
%383 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %380, double %382, double 0x7FF8000000000000, double 0x7FF0000000000000)
%384 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.11, i32 0, i32 0)
%385 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.11, i32 0, i32 1)
%386 = getelementptr inbounds { double, double }, { double, double }* %60, i32 0, i32 0
%387 = getelementptr inbounds { double, double }, { double, double }* %60, i32 0, i32 1
store double %384, double* %386
store double %385, double* %387
%388 = getelementptr inbounds { double, double }, { double, double }* %60, i32 0, i32 0
%389 = load double, double* %388
%390 = getelementptr inbounds { double, double }, { double, double }* %60, i32 0, i32 1
%391 = load double, double* %390
%392 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %389, double %391, double 0x7FF8000000000000, double 0x7FF0000000000000)
br label %393
393: ; preds = %368
br label %394
394: ; preds = %393
store double 0x7FF0000000000000, double* %61
store double 0.000000e+00, double* %62
%395 = load double, double* %61
%396 = load double, double* %62
%397 = getelementptr inbounds { double, double }, { double, double }* %63, i32 0, i32 0
%398 = getelementptr inbounds { double, double }, { double, double }* %63, i32 0, i32 1
store double %395, double* %397
store double %396, double* %398
%399 = getelementptr inbounds { double, double }, { double, double }* %63, i32 0, i32 0
%400 = load double, double* %399
%401 = getelementptr inbounds { double, double }, { double, double }* %63, i32 0, i32 1
%402 = load double, double* %401
%403 = getelementptr inbounds { double, double }, { double, double }* %64, i32 0, i32 0
%404 = getelementptr inbounds { double, double }, { double, double }* %64, i32 0, i32 1
store double %400, double* %403
store double %402, double* %404
%405 = getelementptr inbounds { double, double }, { double, double }* %64, i32 0, i32 0
%406 = load double, double* %405
%407 = getelementptr inbounds { double, double }, { double, double }* %64, i32 0, i32 1
%408 = load double, double* %407
%409 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %406, double %408, double 0x7FF0000000000000, double 0.000000e+00)
%410 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.12, i32 0, i32 0)
%411 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.12, i32 0, i32 1)
%412 = getelementptr inbounds { double, double }, { double, double }* %65, i32 0, i32 0
%413 = getelementptr inbounds { double, double }, { double, double }* %65, i32 0, i32 1
store double %410, double* %412
store double %411, double* %413
%414 = getelementptr inbounds { double, double }, { double, double }* %65, i32 0, i32 0
%415 = load double, double* %414
%416 = getelementptr inbounds { double, double }, { double, double }* %65, i32 0, i32 1
%417 = load double, double* %416
%418 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %415, double %417, double 0x7FF0000000000000, double 0.000000e+00)
br label %419
419: ; preds = %394
br label %420
420: ; preds = %419
store double 0x7FF0000000000000, double* %66
store double -0.000000e+00, double* %67
%421 = load double, double* %66
%422 = load double, double* %67
%423 = getelementptr inbounds { double, double }, { double, double }* %68, i32 0, i32 0
%424 = getelementptr inbounds { double, double }, { double, double }* %68, i32 0, i32 1
store double %421, double* %423
store double %422, double* %424
%425 = getelementptr inbounds { double, double }, { double, double }* %68, i32 0, i32 0
%426 = load double, double* %425
%427 = getelementptr inbounds { double, double }, { double, double }* %68, i32 0, i32 1
%428 = load double, double* %427
%429 = getelementptr inbounds { double, double }, { double, double }* %69, i32 0, i32 0
%430 = getelementptr inbounds { double, double }, { double, double }* %69, i32 0, i32 1
store double %426, double* %429
store double %428, double* %430
%431 = getelementptr inbounds { double, double }, { double, double }* %69, i32 0, i32 0
%432 = load double, double* %431
%433 = getelementptr inbounds { double, double }, { double, double }* %69, i32 0, i32 1
%434 = load double, double* %433
%435 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %432, double %434, double 0x7FF0000000000000, double -0.000000e+00)
%436 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.13, i32 0, i32 0)
%437 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.13, i32 0, i32 1)
%438 = getelementptr inbounds { double, double }, { double, double }* %70, i32 0, i32 0
%439 = getelementptr inbounds { double, double }, { double, double }* %70, i32 0, i32 1
store double %436, double* %438
store double %437, double* %439
%440 = getelementptr inbounds { double, double }, { double, double }* %70, i32 0, i32 0
%441 = load double, double* %440
%442 = getelementptr inbounds { double, double }, { double, double }* %70, i32 0, i32 1
%443 = load double, double* %442
%444 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %441, double %443, double 0x7FF0000000000000, double -0.000000e+00)
br label %445
445: ; preds = %420
br label %446
446: ; preds = %445
store double 0x7FF0000000000000, double* %71
store double 0x7FF8000000000000, double* %72
%447 = load double, double* %71
%448 = load double, double* %72
%449 = getelementptr inbounds { double, double }, { double, double }* %73, i32 0, i32 0
%450 = getelementptr inbounds { double, double }, { double, double }* %73, i32 0, i32 1
store double %447, double* %449
store double %448, double* %450
%451 = getelementptr inbounds { double, double }, { double, double }* %73, i32 0, i32 0
%452 = load double, double* %451
%453 = getelementptr inbounds { double, double }, { double, double }* %73, i32 0, i32 1
%454 = load double, double* %453
%455 = getelementptr inbounds { double, double }, { double, double }* %74, i32 0, i32 0
%456 = getelementptr inbounds { double, double }, { double, double }* %74, i32 0, i32 1
store double %452, double* %455
store double %454, double* %456
%457 = getelementptr inbounds { double, double }, { double, double }* %74, i32 0, i32 0
%458 = load double, double* %457
%459 = getelementptr inbounds { double, double }, { double, double }* %74, i32 0, i32 1
%460 = load double, double* %459
%461 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %458, double %460, double 0x7FF0000000000000, double 0x7FF8000000000000)
%462 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.14, i32 0, i32 0)
%463 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.14, i32 0, i32 1)
%464 = getelementptr inbounds { double, double }, { double, double }* %75, i32 0, i32 0
%465 = getelementptr inbounds { double, double }, { double, double }* %75, i32 0, i32 1
store double %462, double* %464
store double %463, double* %465
%466 = getelementptr inbounds { double, double }, { double, double }* %75, i32 0, i32 0
%467 = load double, double* %466
%468 = getelementptr inbounds { double, double }, { double, double }* %75, i32 0, i32 1
%469 = load double, double* %468
%470 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %467, double %469, double 0x7FF0000000000000, double 0x7FF8000000000000)
br label %471
471: ; preds = %446
br label %472
472: ; preds = %471
store double 0x7FF0000000000000, double* %76
store double 0x7FF0000000000000, double* %77
%473 = load double, double* %76
%474 = load double, double* %77
%475 = getelementptr inbounds { double, double }, { double, double }* %78, i32 0, i32 0
%476 = getelementptr inbounds { double, double }, { double, double }* %78, i32 0, i32 1
store double %473, double* %475
store double %474, double* %476
%477 = getelementptr inbounds { double, double }, { double, double }* %78, i32 0, i32 0
%478 = load double, double* %477
%479 = getelementptr inbounds { double, double }, { double, double }* %78, i32 0, i32 1
%480 = load double, double* %479
%481 = getelementptr inbounds { double, double }, { double, double }* %79, i32 0, i32 0
%482 = getelementptr inbounds { double, double }, { double, double }* %79, i32 0, i32 1
store double %478, double* %481
store double %480, double* %482
%483 = getelementptr inbounds { double, double }, { double, double }* %79, i32 0, i32 0
%484 = load double, double* %483
%485 = getelementptr inbounds { double, double }, { double, double }* %79, i32 0, i32 1
%486 = load double, double* %485
%487 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %484, double %486, double 0x7FF0000000000000, double 0x7FF0000000000000)
%488 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.15, i32 0, i32 0)
%489 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @check_double.cs.15, i32 0, i32 1)
%490 = getelementptr inbounds { double, double }, { double, double }* %80, i32 0, i32 0
%491 = getelementptr inbounds { double, double }, { double, double }* %80, i32 0, i32 1
store double %488, double* %490
store double %489, double* %491
%492 = getelementptr inbounds { double, double }, { double, double }* %80, i32 0, i32 0
%493 = load double, double* %492
%494 = getelementptr inbounds { double, double }, { double, double }* %80, i32 0, i32 1
%495 = load double, double* %494
%496 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double %493, double %495, double 0x7FF0000000000000, double 0x7FF0000000000000)
br label %497
497: ; preds = %472
br label %498
498: ; preds = %497
ret void
}

LLVM IR (-O2):
define void @check_double() {
%1 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
%2 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
%3 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double -0.000000e+00, double 0.000000e+00, double -0.000000e+00)
%4 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double -0.000000e+00, double 0.000000e+00, double -0.000000e+00)
%5 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0x7FF8000000000000, double 0.000000e+00, double 0x7FF8000000000000)
%6 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0x7FF8000000000000, double 0.000000e+00, double 0x7FF8000000000000)
%7 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0x7FF0000000000000, double 0.000000e+00, double 0x7FF0000000000000)
%8 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0.000000e+00, double 0x7FF0000000000000, double 0.000000e+00, double 0x7FF0000000000000)
%9 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0.000000e+00, double -0.000000e+00, double 0.000000e+00)
%10 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0.000000e+00, double -0.000000e+00, double 0.000000e+00)
%11 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00)
%12 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00)
%13 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0x7FF8000000000000, double -0.000000e+00, double 0x7FF8000000000000)
%14 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0x7FF8000000000000, double -0.000000e+00, double 0x7FF8000000000000)
%15 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0x7FF0000000000000, double -0.000000e+00, double 0x7FF0000000000000)
%16 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double -0.000000e+00, double 0x7FF0000000000000, double -0.000000e+00, double 0x7FF0000000000000)
%17 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0.000000e+00, double 0x7FF8000000000000, double 0.000000e+00)
%18 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0.000000e+00, double 0x7FF8000000000000, double 0.000000e+00)
%19 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double -0.000000e+00, double 0x7FF8000000000000, double -0.000000e+00)
%20 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double -0.000000e+00, double 0x7FF8000000000000, double -0.000000e+00)
%21 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0x7FF8000000000000, double 0x7FF8000000000000, double 0x7FF8000000000000)
%22 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0x7FF8000000000000, double 0x7FF8000000000000, double 0x7FF8000000000000)
%23 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0x7FF0000000000000, double 0x7FF8000000000000, double 0x7FF0000000000000)
%24 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF8000000000000, double 0x7FF0000000000000, double 0x7FF8000000000000, double 0x7FF0000000000000)
%25 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0.000000e+00, double 0x7FF0000000000000, double 0.000000e+00)
%26 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0.000000e+00, double 0x7FF0000000000000, double 0.000000e+00)
%27 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double -0.000000e+00, double 0x7FF0000000000000, double -0.000000e+00)
%28 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double -0.000000e+00, double 0x7FF0000000000000, double -0.000000e+00)
%29 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0x7FF8000000000000, double 0x7FF0000000000000, double 0x7FF8000000000000)
%30 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0x7FF8000000000000, double 0x7FF0000000000000, double 0x7FF8000000000000)
%31 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0x7FF0000000000000, double 0x7FF0000000000000, double 0x7FF0000000000000)
%32 = tail call i32 (double, double, double, double, ...) bitcast (i32 (...)* @comparec to i32 (double, double, double, double, ...)*)(double 0x7FF0000000000000, double 0x7FF0000000000000, double 0x7FF0000000000000, double 0x7FF0000000000000)
ret void
}