long double test(long double x0, long double x1, long double x2, long double x3,
                 long double x4, long double x5, long double x6, long double x7,
                 long double x8, long double x9, long double x10,
                 long double x11, long double x12, long double x13,
                 long double x14, long double x15) {
  while (x15 < 1E+30) {
    x0 = (fabsl(x2));
    x1 = (fabsl(x3)) + 1;
    x2 = (fabsl(x4)) + 2;
    x3 = (fabsl(x5)) + 3;
    x4 = (fabsl(x6)) + 4;
    x5 = (fabsl(x7)) + 5;
    x6 = (fabsl(x8)) + 6;
    x7 = (fabsl(x9)) + 7;
    x8 = (fabsl(x10)) + 8;
    x9 = (fabsl(x11)) + 9;
    x10 = (fabsl(x12)) + 10;
    x11 = (fabsl(x13)) + 11;
    x12 = (fabsl(x14)) + 12;
    x13 = (fabsl(x15)) + 13;
    x14 = (fabsl(x0)) + 14;
    x15 = (fabsl(x1)) + 15;
  }
  return x15;
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
fldt   0x100(%rbp)
fstpt  -0x10c(%rbp)
fldt   0xf0(%rbp)
fldt   0xe0(%rbp)
fldt   0xd0(%rbp)
fldt   0xc0(%rbp)
fldt   0xb0(%rbp)
fldt   0xa0(%rbp)
fldt   0x90(%rbp)
fstpt  -0x118(%rbp)
fldt   0x80(%rbp)
fstpt  -0x124(%rbp)
fldt   0x70(%rbp)
fstpt  -0x130(%rbp)
fldt   0x60(%rbp)
fstpt  -0x13c(%rbp)
fldt   0x50(%rbp)
fstpt  -0x148(%rbp)
fldt   0x40(%rbp)
fstpt  -0x154(%rbp)
fldt   0x30(%rbp)
fstpt  -0x160(%rbp)
fldt   0x20(%rbp)
fstpt  -0x16c(%rbp)
fldt   0x10(%rbp)
fstpt  -0x10(%rbp)
fldt   -0x16c(%rbp)
fstpt  -0x20(%rbp)
fldt   -0x160(%rbp)
fstpt  -0x30(%rbp)
fldt   -0x154(%rbp)
fstpt  -0x40(%rbp)
fldt   -0x148(%rbp)
fstpt  -0x50(%rbp)
fldt   -0x13c(%rbp)
fstpt  -0x60(%rbp)
fldt   -0x130(%rbp)
fstpt  -0x70(%rbp)
fldt   -0x124(%rbp)
fstpt  -0x80(%rbp)
fldt   -0x118(%rbp)
fstpt  -0x90(%rbp)
fldt   -0x10c(%rbp)
fxch   %st(1)
fstpt  -0xa0(%rbp)
fxch   %st(1)
fstpt  -0xb0(%rbp)
fxch   %st(1)
fstpt  -0xc0(%rbp)
fxch   %st(1)
fstpt  -0xd0(%rbp)
fxch   %st(1)
fstpt  -0xe0(%rbp)
fxch   %st(1)
fstpt  -0xf0(%rbp)
fstpt  -0x100(%rbp)
fldt   -0x100(%rbp)
fldl   0xdde(%rip)
fucomip %st(1),%st
fstp   %st(0)
jbe    135a <test+0x25a>
jmp    1231 <test+0x131>
fldt   -0x30(%rbp)
fabs
fstpt  -0x10(%rbp)
fldt   -0x40(%rbp)
fabs
fld1
faddp  %st,%st(1)
fstpt  -0x20(%rbp)
fldt   -0x50(%rbp)
fabs
flds   0xdb8(%rip)
faddp  %st,%st(1)
fstpt  -0x30(%rbp)
fldt   -0x60(%rbp)
fabs
flds   0xdac(%rip)
faddp  %st,%st(1)
fstpt  -0x40(%rbp)
fldt   -0x70(%rbp)
fabs
flds   0xda0(%rip)
faddp  %st,%st(1)
fstpt  -0x50(%rbp)
fldt   -0x80(%rbp)
fabs
flds   0xd94(%rip)
faddp  %st,%st(1)
fstpt  -0x60(%rbp)
fldt   -0x90(%rbp)
fabs
flds   0xd85(%rip)
faddp  %st,%st(1)
fstpt  -0x70(%rbp)
fldt   -0xa0(%rbp)
fabs
flds   0xd76(%rip)
faddp  %st,%st(1)
fstpt  -0x80(%rbp)
fldt   -0xb0(%rbp)
fabs
flds   0xd67(%rip)
faddp  %st,%st(1)
fstpt  -0x90(%rbp)
fldt   -0xc0(%rbp)
fabs
flds   0xd55(%rip)
faddp  %st,%st(1)
fstpt  -0xa0(%rbp)
fldt   -0xd0(%rbp)
fabs
flds   0xd43(%rip)
faddp  %st,%st(1)
fstpt  -0xb0(%rbp)
fldt   -0xe0(%rbp)
fabs
flds   0xd31(%rip)
faddp  %st,%st(1)
fstpt  -0xc0(%rbp)
fldt   -0xf0(%rbp)
fabs
flds   0xd1f(%rip)
faddp  %st,%st(1)
fstpt  -0xd0(%rbp)
fldt   -0x100(%rbp)
fabs
flds   0xd0d(%rip)
faddp  %st,%st(1)
fstpt  -0xe0(%rbp)
fldt   -0x10(%rbp)
fabs
flds   0xcfe(%rip)
faddp  %st,%st(1)
fstpt  -0xf0(%rbp)
fldt   -0x20(%rbp)
fabs
flds   0xcef(%rip)
faddp  %st,%st(1)
fstpt  -0x100(%rbp)
jmp    1216 <test+0x116>
fldt   -0x100(%rbp)
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
fldt   0xf8(%rsp)
fldt   0xd8(%rsp)
fldt   0xb8(%rsp)
fldt   0x98(%rsp)
fldt   0x78(%rsp)
fldt   0x58(%rsp)
fldl   0xed6(%rip)
fld    %st(0)
fstpt  -0x24(%rsp)
fucomip %st(6),%st
fldt   0x38(%rsp)
jbe    11ba <test+0xba>
fxch   %st(5)
fstpt  -0x18(%rsp)
fldt   -0x24(%rsp)
fstp   %st(0)
nopl   0x0(%rax,%rax,1)
fxch   %st(4)
fabs
fstpt  -0xc(%rsp)
fxch   %st(3)
fabs
fadds  0xea6(%rip)
fxch   %st(3)
fabs
fadds  0xea0(%rip)
fxch   %st(1)
fabs
fadds  0xe9a(%rip)
fxch   %st(2)
fabs
fadds  0xe94(%rip)
fldt   -0x18(%rsp)
fabs
fadds  0xe8c(%rip)
fxch   %st(5)
fabs
fadds  0xe86(%rip)
fstpt  -0x18(%rsp)
fld1
fldt   -0xc(%rsp)
faddp  %st,%st(1)
fadds  0xe78(%rip)
fldt   -0x24(%rsp)
fucomip %st(1),%st
fxch   %st(5)
fxch   %st(3)
fxch   %st(1)
fxch   %st(2)
ja     1150 <test+0x50>
jmp    11d8 <test+0xd8>
fstp   %st(1)
fstp   %st(3)
fstp   %st(1)
fstp   %st(1)
fstp   %st(0)
fstp   %st(0)
fldz
fldz
fldz
fldz
fldz
fxch   %st(2)
fxch   %st(4)
fxch   %st(3)
fxch   %st(2)
fstp   %st(3)
fstp   %st(1)
fstp   %st(2)
fstp   %st(1)
fstp   %st(0)
ret

LLVM IR (-O0):
define x86_fp80 @test(x86_fp80 %0, x86_fp80 %1, x86_fp80 %2, x86_fp80 %3, x86_fp80 %4, x86_fp80 %5, x86_fp80 %6, x86_fp80 %7, x86_fp80 %8, x86_fp80 %9, x86_fp80 %10, x86_fp80 %11, x86_fp80 %12, x86_fp80 %13, x86_fp80 %14, x86_fp80 %15) {
%17 = alloca x86_fp80
%18 = alloca x86_fp80
%19 = alloca x86_fp80
%20 = alloca x86_fp80
%21 = alloca x86_fp80
%22 = alloca x86_fp80
%23 = alloca x86_fp80
%24 = alloca x86_fp80
%25 = alloca x86_fp80
%26 = alloca x86_fp80
%27 = alloca x86_fp80
%28 = alloca x86_fp80
%29 = alloca x86_fp80
%30 = alloca x86_fp80
%31 = alloca x86_fp80
%32 = alloca x86_fp80
store x86_fp80 %0, x86_fp80* %17
store x86_fp80 %1, x86_fp80* %18
store x86_fp80 %2, x86_fp80* %19
store x86_fp80 %3, x86_fp80* %20
store x86_fp80 %4, x86_fp80* %21
store x86_fp80 %5, x86_fp80* %22
store x86_fp80 %6, x86_fp80* %23
store x86_fp80 %7, x86_fp80* %24
store x86_fp80 %8, x86_fp80* %25
store x86_fp80 %9, x86_fp80* %26
store x86_fp80 %10, x86_fp80* %27
store x86_fp80 %11, x86_fp80* %28
store x86_fp80 %12, x86_fp80* %29
store x86_fp80 %13, x86_fp80* %30
store x86_fp80 %14, x86_fp80* %31
store x86_fp80 %15, x86_fp80* %32
br label %33
33: ; preds = %36, %16
%34 = load x86_fp80, x86_fp80* %32
%35 = fcmp olt x86_fp80 %34, 0xK4062C9F2C9CD04675000
br i1 %35, label %36, label %84
36: ; preds = %33
%37 = load x86_fp80, x86_fp80* %19
%38 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %37)
store x86_fp80 %38, x86_fp80* %17
%39 = load x86_fp80, x86_fp80* %20
%40 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %39)
%41 = fadd x86_fp80 %40, 0xK3FFF8000000000000000
store x86_fp80 %41, x86_fp80* %18
%42 = load x86_fp80, x86_fp80* %21
%43 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %42)
%44 = fadd x86_fp80 %43, 0xK40008000000000000000
store x86_fp80 %44, x86_fp80* %19
%45 = load x86_fp80, x86_fp80* %22
%46 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %45)
%47 = fadd x86_fp80 %46, 0xK4000C000000000000000
store x86_fp80 %47, x86_fp80* %20
%48 = load x86_fp80, x86_fp80* %23
%49 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %48)
%50 = fadd x86_fp80 %49, 0xK40018000000000000000
store x86_fp80 %50, x86_fp80* %21
%51 = load x86_fp80, x86_fp80* %24
%52 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %51)
%53 = fadd x86_fp80 %52, 0xK4001A000000000000000
store x86_fp80 %53, x86_fp80* %22
%54 = load x86_fp80, x86_fp80* %25
%55 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %54)
%56 = fadd x86_fp80 %55, 0xK4001C000000000000000
store x86_fp80 %56, x86_fp80* %23
%57 = load x86_fp80, x86_fp80* %26
%58 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %57)
%59 = fadd x86_fp80 %58, 0xK4001E000000000000000
store x86_fp80 %59, x86_fp80* %24
%60 = load x86_fp80, x86_fp80* %27
%61 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %60)
%62 = fadd x86_fp80 %61, 0xK40028000000000000000
store x86_fp80 %62, x86_fp80* %25
%63 = load x86_fp80, x86_fp80* %28
%64 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %63)
%65 = fadd x86_fp80 %64, 0xK40029000000000000000
store x86_fp80 %65, x86_fp80* %26
%66 = load x86_fp80, x86_fp80* %29
%67 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %66)
%68 = fadd x86_fp80 %67, 0xK4002A000000000000000
store x86_fp80 %68, x86_fp80* %27
%69 = load x86_fp80, x86_fp80* %30
%70 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %69)
%71 = fadd x86_fp80 %70, 0xK4002B000000000000000
store x86_fp80 %71, x86_fp80* %28
%72 = load x86_fp80, x86_fp80* %31
%73 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %72)
%74 = fadd x86_fp80 %73, 0xK4002C000000000000000
store x86_fp80 %74, x86_fp80* %29
%75 = load x86_fp80, x86_fp80* %32
%76 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %75)
%77 = fadd x86_fp80 %76, 0xK4002D000000000000000
store x86_fp80 %77, x86_fp80* %30
%78 = load x86_fp80, x86_fp80* %17
%79 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %78)
%80 = fadd x86_fp80 %79, 0xK4002E000000000000000
store x86_fp80 %80, x86_fp80* %31
%81 = load x86_fp80, x86_fp80* %18
%82 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %81)
%83 = fadd x86_fp80 %82, 0xK4002F000000000000000
store x86_fp80 %83, x86_fp80* %32
br label %33
84: ; preds = %33
%85 = load x86_fp80, x86_fp80* %32
ret x86_fp80 %85
}

LLVM IR (-O2):
define x86_fp80 @test(x86_fp80 %0, x86_fp80 %1, x86_fp80 %2, x86_fp80 %3, x86_fp80 %4, x86_fp80 %5, x86_fp80 %6, x86_fp80 %7, x86_fp80 %8, x86_fp80 %9, x86_fp80 %10, x86_fp80 %11, x86_fp80 %12, x86_fp80 %13, x86_fp80 %14, x86_fp80 %15) {
%17 = fcmp olt x86_fp80 %15, 0xK4062C9F2C9CD04675000
br i1 %17, label %18, label %42
18: ; preds = %16, %18
%19 = phi x86_fp80 [ %40, %18 ], [ %15, %16 ]
%20 = phi x86_fp80 [ %39, %18 ], [ %13, %16 ]
%21 = phi x86_fp80 [ %37, %18 ], [ %11, %16 ]
%22 = phi x86_fp80 [ %35, %18 ], [ %9, %16 ]
%23 = phi x86_fp80 [ %33, %18 ], [ %7, %16 ]
%24 = phi x86_fp80 [ %31, %18 ], [ %5, %16 ]
%25 = phi x86_fp80 [ %29, %18 ], [ %3, %16 ]
%26 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %25)
%27 = fadd x86_fp80 %26, 0xK3FFF8000000000000000
%28 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %24)
%29 = fadd x86_fp80 %28, 0xK4000C000000000000000
%30 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %23)
%31 = fadd x86_fp80 %30, 0xK4001A000000000000000
%32 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %22)
%33 = fadd x86_fp80 %32, 0xK4001E000000000000000
%34 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %21)
%35 = fadd x86_fp80 %34, 0xK40029000000000000000
%36 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %20)
%37 = fadd x86_fp80 %36, 0xK4002B000000000000000
%38 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %19)
%39 = fadd x86_fp80 %38, 0xK4002D000000000000000
%40 = fadd x86_fp80 %27, 0xK4002F000000000000000
%41 = fcmp olt x86_fp80 %40, 0xK4062C9F2C9CD04675000
br i1 %41, label %18, label %42
42: ; preds = %18, %16
%43 = phi x86_fp80 [ %15, %16 ], [ %40, %18 ]
ret x86_fp80 %43
}