double sum_double26(double a1, double a2, double a3, double a4, double a5,
                    double a6, double a7, double a8, double a9, double a10,
                    double a11, double a12, double a13, double a14, double a15,
                    double a16, double a17, double a18, double a19, double a20,
                    double a21, double a22, double a23, double a24, double a25,
                    double a26) {
  return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
         a14 + a15 + a16 + a17 + a18 + a19 + a20 + a21 + a22 + a23 + a24 + a25 +
         a26;
}


x86 assembly (clang, -O0):
<sum_double26>:
push   %rbp
mov    %rsp,%rbp
movsd  0x98(%rbp),%xmm8
movsd  0x90(%rbp),%xmm8
movsd  0x88(%rbp),%xmm8
movsd  0x80(%rbp),%xmm8
movsd  0x78(%rbp),%xmm8
movsd  0x70(%rbp),%xmm8
movsd  0x68(%rbp),%xmm8
movsd  0x60(%rbp),%xmm8
movsd  0x58(%rbp),%xmm8
movsd  0x50(%rbp),%xmm8
movsd  0x48(%rbp),%xmm8
movsd  0x40(%rbp),%xmm8
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
addsd  0x10(%rbp),%xmm0
addsd  0x18(%rbp),%xmm0
addsd  0x20(%rbp),%xmm0
addsd  0x28(%rbp),%xmm0
addsd  0x30(%rbp),%xmm0
addsd  0x38(%rbp),%xmm0
addsd  0x40(%rbp),%xmm0
addsd  0x48(%rbp),%xmm0
addsd  0x50(%rbp),%xmm0
addsd  0x58(%rbp),%xmm0
addsd  0x60(%rbp),%xmm0
addsd  0x68(%rbp),%xmm0
addsd  0x70(%rbp),%xmm0
addsd  0x78(%rbp),%xmm0
addsd  0x80(%rbp),%xmm0
addsd  0x88(%rbp),%xmm0
addsd  0x90(%rbp),%xmm0
addsd  0x98(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<sum_double26>:
addsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
addsd  %xmm4,%xmm0
addsd  %xmm5,%xmm0
addsd  %xmm6,%xmm0
addsd  %xmm7,%xmm0
addsd  0x8(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
addsd  0x18(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
addsd  0x30(%rsp),%xmm0
addsd  0x38(%rsp),%xmm0
addsd  0x40(%rsp),%xmm0
addsd  0x48(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
addsd  0x58(%rsp),%xmm0
addsd  0x60(%rsp),%xmm0
addsd  0x68(%rsp),%xmm0
addsd  0x70(%rsp),%xmm0
addsd  0x78(%rsp),%xmm0
addsd  0x80(%rsp),%xmm0
addsd  0x88(%rsp),%xmm0
addsd  0x90(%rsp),%xmm0
ret

LLVM IR (-O0):
define double @sum_double26(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25) {
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
store double %0, double* %27
store double %1, double* %28
store double %2, double* %29
store double %3, double* %30
store double %4, double* %31
store double %5, double* %32
store double %6, double* %33
store double %7, double* %34
store double %8, double* %35
store double %9, double* %36
store double %10, double* %37
store double %11, double* %38
store double %12, double* %39
store double %13, double* %40
store double %14, double* %41
store double %15, double* %42
store double %16, double* %43
store double %17, double* %44
store double %18, double* %45
store double %19, double* %46
store double %20, double* %47
store double %21, double* %48
store double %22, double* %49
store double %23, double* %50
store double %24, double* %51
store double %25, double* %52
%53 = load double, double* %27
%54 = load double, double* %28
%55 = fadd double %53, %54
%56 = load double, double* %29
%57 = fadd double %55, %56
%58 = load double, double* %30
%59 = fadd double %57, %58
%60 = load double, double* %31
%61 = fadd double %59, %60
%62 = load double, double* %32
%63 = fadd double %61, %62
%64 = load double, double* %33
%65 = fadd double %63, %64
%66 = load double, double* %34
%67 = fadd double %65, %66
%68 = load double, double* %35
%69 = fadd double %67, %68
%70 = load double, double* %36
%71 = fadd double %69, %70
%72 = load double, double* %37
%73 = fadd double %71, %72
%74 = load double, double* %38
%75 = fadd double %73, %74
%76 = load double, double* %39
%77 = fadd double %75, %76
%78 = load double, double* %40
%79 = fadd double %77, %78
%80 = load double, double* %41
%81 = fadd double %79, %80
%82 = load double, double* %42
%83 = fadd double %81, %82
%84 = load double, double* %43
%85 = fadd double %83, %84
%86 = load double, double* %44
%87 = fadd double %85, %86
%88 = load double, double* %45
%89 = fadd double %87, %88
%90 = load double, double* %46
%91 = fadd double %89, %90
%92 = load double, double* %47
%93 = fadd double %91, %92
%94 = load double, double* %48
%95 = fadd double %93, %94
%96 = load double, double* %49
%97 = fadd double %95, %96
%98 = load double, double* %50
%99 = fadd double %97, %98
%100 = load double, double* %51
%101 = fadd double %99, %100
%102 = load double, double* %52
%103 = fadd double %101, %102
ret double %103
}

LLVM IR (-O2):
define double @sum_double26(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25) {
%27 = fadd double %0, %1
%28 = fadd double %27, %2
%29 = fadd double %28, %3
%30 = fadd double %29, %4
%31 = fadd double %30, %5
%32 = fadd double %31, %6
%33 = fadd double %32, %7
%34 = fadd double %33, %8
%35 = fadd double %34, %9
%36 = fadd double %35, %10
%37 = fadd double %36, %11
%38 = fadd double %37, %12
%39 = fadd double %38, %13
%40 = fadd double %39, %14
%41 = fadd double %40, %15
%42 = fadd double %41, %16
%43 = fadd double %42, %17
%44 = fadd double %43, %18
%45 = fadd double %44, %19
%46 = fadd double %45, %20
%47 = fadd double %46, %21
%48 = fadd double %47, %22
%49 = fadd double %48, %23
%50 = fadd double %49, %24
%51 = fadd double %50, %25
ret double %51
}