int test_fltcmp() {
  float val_1;
  float val_2;
  val_1 = 1.0f;
  val_2 = 1.0f;
  int result = fltcmp_asc(val_1, val_2);
  do {
    if (!(result == 0)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__, 89,
             "Result should be 0!");
      return -1;
    }
  } while (0);
  val_1 = 0.001f;
  val_2 = 0.01f;
  result = fltcmp_asc(val_1, val_2);
  do {
    if (!(result == -1)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__, 95,
             "Result should be -1!");
      return -1;
    }
  } while (0);
  val_1 = 0.01f;
  val_2 = 0.001f;
  result = fltcmp_asc(val_1, val_2);
  do {
    if (!(result == 1)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__,
             101, "Result should be 1!");
      return -1;
    }
  } while (0);
  val_1 = 1.0f;
  val_2 = 1.0f;
  result = fltcmp_desc(val_1, val_2);
  do {
    if (!(result == 0)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__,
             111, "Result should be 0!");
      return -1;
    }
  } while (0);
  val_1 = 0.001f;
  val_2 = 0.01f;
  result = fltcmp_desc(val_1, val_2);
  do {
    if (!(result == 1)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__,
             117, "Result should be 1!");
      return -1;
    }
  } while (0);
  val_1 = 0.01f;
  val_2 = 0.001f;
  result = fltcmp_desc(val_1, val_2);
  do {
    if (!(result == -1)) {
      printf("%sERROR!%s [%s:%d] %s\n", "\x1B[1;31m", "\x1B[1;0m", __func__,
             123, "Result should be -1!");
      return -1;
    }
  } while (0);
  return 0;
}


x86 assembly (clang, -O0):
<test_fltcmp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movss  0xec0(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xeb3(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     11b4 <test_fltcmp+0x84>
lea    0xe8d(%rip),%rdi
lea    0xe9d(%rip),%rsi
lea    0xe9e(%rip),%rdx
lea    0xe9e(%rip),%rcx
mov    $0x59,%r8d
lea    0xe9d(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    11b9 <test_fltcmp+0x89>
movss  0xe47(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xe36(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0xffffffff,-0x10(%rbp)
je     1235 <test_fltcmp+0x105>
lea    0xe0c(%rip),%rdi
lea    0xe1c(%rip),%rsi
lea    0xe1d(%rip),%rdx
lea    0xe1d(%rip),%rcx
mov    $0x5f,%r8d
lea    0xe30(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    123a <test_fltcmp+0x10a>
movss  0xdc2(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xdb9(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0x1,-0x10(%rbp)
je     12b6 <test_fltcmp+0x186>
lea    0xd8b(%rip),%rdi
lea    0xd9b(%rip),%rsi
lea    0xd9c(%rip),%rdx
lea    0xd9c(%rip),%rcx
mov    $0x65,%r8d
lea    0xdc4(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    12bb <test_fltcmp+0x18b>
movss  0xd3d(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xd30(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     1337 <test_fltcmp+0x207>
lea    0xd0a(%rip),%rdi
lea    0xd1a(%rip),%rsi
lea    0xd1b(%rip),%rdx
lea    0xd1b(%rip),%rcx
mov    $0x6f,%r8d
lea    0xd1a(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    133c <test_fltcmp+0x20c>
movss  0xcc4(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xcb3(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0x1,-0x10(%rbp)
je     13b8 <test_fltcmp+0x288>
lea    0xc89(%rip),%rdi
lea    0xc99(%rip),%rsi
lea    0xc9a(%rip),%rdx
lea    0xc9a(%rip),%rcx
mov    $0x75,%r8d
lea    0xcc2(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    13bd <test_fltcmp+0x28d>
movss  0xc3f(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xc36(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0xffffffff,-0x10(%rbp)
je     1439 <test_fltcmp+0x309>
lea    0xc08(%rip),%rdi
lea    0xc18(%rip),%rsi
lea    0xc19(%rip),%rdx
lea    0xc19(%rip),%rcx
mov    $0x7b,%r8d
lea    0xc2c(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1445 <test_fltcmp+0x315>
jmp    143e <test_fltcmp+0x30e>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_fltcmp>:
push   %rax
movsd  0xec7(%rip),%xmm0
movaps %xmm0,%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
test   %eax,%eax
je     1175 <test_fltcmp+0x45>
lea    0xeca(%rip),%rdi
lea    0xeda(%rip),%rsi
lea    0xedb(%rip),%rdx
lea    0xedb(%rip),%rcx
lea    0xee0(%rip),%r9
mov    $0x59,%r8d
jmp    1245 <test_fltcmp+0x115>
movsd  0xe8b(%rip),%xmm0
movsd  0xe8b(%rip),%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
cmp    $0xffffffff,%eax
je     11bf <test_fltcmp+0x8f>
lea    0xe80(%rip),%rdi
lea    0xe90(%rip),%rsi
lea    0xe91(%rip),%rdx
lea    0xe91(%rip),%rcx
lea    0xeaa(%rip),%r9
mov    $0x5f,%r8d
jmp    1245 <test_fltcmp+0x115>
movsd  0xe49(%rip),%xmm0
movsd  0xe39(%rip),%xmm1
mov    $0x2,%al
call   1030 <fltcmp_asc@plt>
cmp    $0x1,%eax
jne    121c <test_fltcmp+0xec>
movsd  0xe1d(%rip),%xmm0
movaps %xmm0,%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
test   %eax,%eax
je     1253 <test_fltcmp+0x123>
lea    0xe20(%rip),%rdi
lea    0xe30(%rip),%rsi
lea    0xe31(%rip),%rdx
lea    0xe31(%rip),%rcx
lea    0xe36(%rip),%r9
mov    $0x6f,%r8d
jmp    1245 <test_fltcmp+0x115>
lea    0xdf5(%rip),%rdi
lea    0xe05(%rip),%rsi
lea    0xe06(%rip),%rdx
lea    0xe06(%rip),%rcx
lea    0xe34(%rip),%r9
mov    $0x65,%r8d
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xffffffff,%eax
pop    %rcx
ret
movsd  0xdad(%rip),%xmm0
movsd  0xdad(%rip),%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
cmp    $0x1,%eax
jne    12b6 <test_fltcmp+0x186>
movsd  0xd99(%rip),%xmm0
movsd  0xd89(%rip),%xmm1
mov    $0x2,%al
call   1050 <fltcmp_desc@plt>
cmp    $0xffffffff,%eax
je     12e4 <test_fltcmp+0x1b4>
lea    0xd86(%rip),%rdi
lea    0xd96(%rip),%rsi
lea    0xd97(%rip),%rdx
lea    0xd97(%rip),%rcx
lea    0xdb0(%rip),%r9
mov    $0x7b,%r8d
jmp    1245 <test_fltcmp+0x115>
lea    0xd5b(%rip),%rdi
lea    0xd6b(%rip),%rsi
lea    0xd6c(%rip),%rdx
lea    0xd6c(%rip),%rcx
lea    0xd9a(%rip),%r9
mov    $0x75,%r8d
jmp    1245 <test_fltcmp+0x115>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [23 x i8] c"%sERROR!%s [%s:%d] %s\0A\00"
@.str.1 = [8 x i8] c"\1B[1;31m\00"
@.str.2 = [7 x i8] c"\1B[1;0m\00"
@__func__.test_fltcmp = [12 x i8] c"test_fltcmp\00"
@.str.3 = [20 x i8] c"Result should be 0!\00"
@.str.4 = [21 x i8] c"Result should be -1!\00"
@.str.5 = [20 x i8] c"Result should be 1!\00"
define i32 @test_fltcmp() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca i32
store float 1.000000e+00, float* %2
store float 1.000000e+00, float* %3
%5 = load float, float* %2
%6 = fpext float %5 to double
%7 = load float, float* %3
%8 = fpext float %7 to double
%9 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double %6, double %8)
store i32 %9, i32* %4
br label %10
10: ; preds = %0
%11 = load i32, i32* %4
%12 = icmp eq i32 %11, 0
br i1 %12, label %15, label %13
13: ; preds = %10
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 89, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
15: ; preds = %10
br label %16
16: ; preds = %15
store float 0x3F50624DE0000000, float* %2
store float 0x3F847AE140000000, float* %3
%17 = load float, float* %2
%18 = fpext float %17 to double
%19 = load float, float* %3
%20 = fpext float %19 to double
%21 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double %18, double %20)
store i32 %21, i32* %4
br label %22
22: ; preds = %16
%23 = load i32, i32* %4
%24 = icmp eq i32 %23, -1
br i1 %24, label %27, label %25
25: ; preds = %22
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 95, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
27: ; preds = %22
br label %28
28: ; preds = %27
store float 0x3F847AE140000000, float* %2
store float 0x3F50624DE0000000, float* %3
%29 = load float, float* %2
%30 = fpext float %29 to double
%31 = load float, float* %3
%32 = fpext float %31 to double
%33 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double %30, double %32)
store i32 %33, i32* %4
br label %34
34: ; preds = %28
%35 = load i32, i32* %4
%36 = icmp eq i32 %35, 1
br i1 %36, label %39, label %37
37: ; preds = %34
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 101, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
39: ; preds = %34
br label %40
40: ; preds = %39
store float 1.000000e+00, float* %2
store float 1.000000e+00, float* %3
%41 = load float, float* %2
%42 = fpext float %41 to double
%43 = load float, float* %3
%44 = fpext float %43 to double
%45 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double %42, double %44)
store i32 %45, i32* %4
br label %46
46: ; preds = %40
%47 = load i32, i32* %4
%48 = icmp eq i32 %47, 0
br i1 %48, label %51, label %49
49: ; preds = %46
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 111, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
51: ; preds = %46
br label %52
52: ; preds = %51
store float 0x3F50624DE0000000, float* %2
store float 0x3F847AE140000000, float* %3
%53 = load float, float* %2
%54 = fpext float %53 to double
%55 = load float, float* %3
%56 = fpext float %55 to double
%57 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double %54, double %56)
store i32 %57, i32* %4
br label %58
58: ; preds = %52
%59 = load i32, i32* %4
%60 = icmp eq i32 %59, 1
br i1 %60, label %63, label %61
61: ; preds = %58
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 117, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
63: ; preds = %58
br label %64
64: ; preds = %63
store float 0x3F847AE140000000, float* %2
store float 0x3F50624DE0000000, float* %3
%65 = load float, float* %2
%66 = fpext float %65 to double
%67 = load float, float* %3
%68 = fpext float %67 to double
%69 = call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double %66, double %68)
store i32 %69, i32* %4
br label %70
70: ; preds = %64
%71 = load i32, i32* %4
%72 = icmp eq i32 %71, -1
br i1 %72, label %75, label %73
73: ; preds = %70
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 123, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
store i32 -1, i32* %1
br label %77
75: ; preds = %70
br label %76
76: ; preds = %75
store i32 0, i32* %1
br label %77
77: ; preds = %76, %73, %61, %49, %37, %25, %13
%78 = load i32, i32* %1
ret i32 %78
}

LLVM IR (-O2):
@.str = [23 x i8] c"%sERROR!%s [%s:%d] %s\0A\00"
@.str.1 = [8 x i8] c"\1B[1;31m\00"
@.str.2 = [7 x i8] c"\1B[1;0m\00"
@__func__.test_fltcmp = [12 x i8] c"test_fltcmp\00"
@.str.3 = [20 x i8] c"Result should be 0!\00"
@.str.4 = [21 x i8] c"Result should be -1!\00"
@.str.5 = [20 x i8] c"Result should be 1!\00"
define i32 @test_fltcmp() {
%1 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double 1.000000e+00, double 1.000000e+00)
%2 = icmp eq i32 %1, 0
br i1 %2, label %5, label %3
3: ; preds = %0
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 89, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0))
br label %30
5: ; preds = %0
%6 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double 0x3F50624DE0000000, double 0x3F847AE140000000)
%7 = icmp eq i32 %6, -1
br i1 %7, label %10, label %8
8: ; preds = %5
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 95, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
br label %30
10: ; preds = %5
%11 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_asc to i32 (double, double, ...)*)(double 0x3F847AE140000000, double 0x3F50624DE0000000)
%12 = icmp eq i32 %11, 1
br i1 %12, label %15, label %13
13: ; preds = %10
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 101, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
br label %30
15: ; preds = %10
%16 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double 1.000000e+00, double 1.000000e+00)
%17 = icmp eq i32 %16, 0
br i1 %17, label %20, label %18
18: ; preds = %15
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 111, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0))
br label %30
20: ; preds = %15
%21 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double 0x3F50624DE0000000, double 0x3F847AE140000000)
%22 = icmp eq i32 %21, 1
br i1 %22, label %25, label %23
23: ; preds = %20
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 117, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0))
br label %30
25: ; preds = %20
%26 = tail call i32 (double, double, ...) bitcast (i32 (...)* @fltcmp_desc to i32 (double, double, ...)*)(double 0x3F847AE140000000, double 0x3F50624DE0000000)
%27 = icmp eq i32 %26, -1
br i1 %27, label %30, label %28
28: ; preds = %25
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.test_fltcmp, i64 0, i64 0), i32 123, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
br label %30
30: ; preds = %25, %28, %23, %18, %13, %8, %3
%31 = phi i32 [ -1, %28 ], [ -1, %23 ], [ -1, %18 ], [ -1, %13 ], [ -1, %8 ], [ -1, %3 ], [ 0, %25 ]
ret i32 %31
}