int ffi_test_31(int x0, int x1, int x2, int x3, int x4, int x5, int x6, int x7,
                int x8, int x9, int x10, int x11, int x12, int x13, int x14,
                int x15, int x16, int x17, int x18, int x19, int x20, int x21,
                int x22, int x23, int x24, int x25, int x26, int x27, int x28,
                int x29, int x30, int x31, int x32, int x33, int x34, int x35,
                int x36, int x37, int x38, int x39, int x40, int x41) {
  return x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 +
         x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23 + x24 +
         x25 + x26 + x27 + x28 + x29 + x30 + x31 + x32 + x33 + x34 + x35 + x36 +
         x37 + x38 + x39 + x40 + x41;
}


x86 assembly (clang, -O0):
<ffi_test_31>:
push   %rbp
mov    %rsp,%rbp
mov    0x128(%rbp),%eax
mov    0x120(%rbp),%eax
mov    0x118(%rbp),%eax
mov    0x110(%rbp),%eax
mov    0x108(%rbp),%eax
mov    0x100(%rbp),%eax
mov    0xf8(%rbp),%eax
mov    0xf0(%rbp),%eax
mov    0xe8(%rbp),%eax
mov    0xe0(%rbp),%eax
mov    0xd8(%rbp),%eax
mov    0xd0(%rbp),%eax
mov    0xc8(%rbp),%eax
mov    0xc0(%rbp),%eax
mov    0xb8(%rbp),%eax
mov    0xb0(%rbp),%eax
mov    0xa8(%rbp),%eax
mov    0xa0(%rbp),%eax
mov    0x98(%rbp),%eax
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%eax
mov    0x78(%rbp),%eax
mov    0x70(%rbp),%eax
mov    0x68(%rbp),%eax
mov    0x60(%rbp),%eax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
mov    -0x4(%rbp),%eax
add    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
add    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
add    0x10(%rbp),%eax
add    0x18(%rbp),%eax
add    0x20(%rbp),%eax
add    0x28(%rbp),%eax
add    0x30(%rbp),%eax
add    0x38(%rbp),%eax
add    0x40(%rbp),%eax
add    0x48(%rbp),%eax
add    0x50(%rbp),%eax
add    0x58(%rbp),%eax
add    0x60(%rbp),%eax
add    0x68(%rbp),%eax
add    0x70(%rbp),%eax
add    0x78(%rbp),%eax
add    0x80(%rbp),%eax
add    0x88(%rbp),%eax
add    0x90(%rbp),%eax
add    0x98(%rbp),%eax
add    0xa0(%rbp),%eax
add    0xa8(%rbp),%eax
add    0xb0(%rbp),%eax
add    0xb8(%rbp),%eax
add    0xc0(%rbp),%eax
add    0xc8(%rbp),%eax
add    0xd0(%rbp),%eax
add    0xd8(%rbp),%eax
add    0xe0(%rbp),%eax
add    0xe8(%rbp),%eax
add    0xf0(%rbp),%eax
add    0xf8(%rbp),%eax
add    0x100(%rbp),%eax
add    0x108(%rbp),%eax
add    0x110(%rbp),%eax
add    0x118(%rbp),%eax
add    0x120(%rbp),%eax
add    0x128(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ffi_test_31>:
lea    (%rdi,%rsi,1),%eax
add    %edx,%eax
add    %ecx,%eax
add    %r8d,%eax
add    %r9d,%eax
add    0x8(%rsp),%eax
add    0x10(%rsp),%eax
add    0x18(%rsp),%eax
add    0x20(%rsp),%eax
add    0x28(%rsp),%eax
add    0x30(%rsp),%eax
add    0x38(%rsp),%eax
add    0x40(%rsp),%eax
add    0x48(%rsp),%eax
add    0x50(%rsp),%eax
add    0x58(%rsp),%eax
add    0x60(%rsp),%eax
add    0x68(%rsp),%eax
add    0x70(%rsp),%eax
add    0x78(%rsp),%eax
add    0x80(%rsp),%eax
add    0x88(%rsp),%eax
add    0x90(%rsp),%eax
add    0x98(%rsp),%eax
add    0xa0(%rsp),%eax
add    0xa8(%rsp),%eax
add    0xb0(%rsp),%eax
add    0xb8(%rsp),%eax
add    0xc0(%rsp),%eax
add    0xc8(%rsp),%eax
add    0xd0(%rsp),%eax
add    0xd8(%rsp),%eax
add    0xe0(%rsp),%eax
add    0xe8(%rsp),%eax
add    0xf0(%rsp),%eax
add    0xf8(%rsp),%eax
add    0x100(%rsp),%eax
add    0x108(%rsp),%eax
add    0x110(%rsp),%eax
add    0x118(%rsp),%eax
add    0x120(%rsp),%eax
ret

LLVM IR (-O0):
define i32 @ffi_test_31(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21, i32 %22, i32 %23, i32 %24, i32 %25, i32 %26, i32 %27, i32 %28, i32 %29, i32 %30, i32 %31, i32 %32, i32 %33, i32 %34, i32 %35, i32 %36, i32 %37, i32 %38, i32 %39, i32 %40, i32 %41) {
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca i32
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca i32
%73 = alloca i32
%74 = alloca i32
%75 = alloca i32
%76 = alloca i32
%77 = alloca i32
%78 = alloca i32
%79 = alloca i32
%80 = alloca i32
%81 = alloca i32
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32
store i32 %0, i32* %43
store i32 %1, i32* %44
store i32 %2, i32* %45
store i32 %3, i32* %46
store i32 %4, i32* %47
store i32 %5, i32* %48
store i32 %6, i32* %49
store i32 %7, i32* %50
store i32 %8, i32* %51
store i32 %9, i32* %52
store i32 %10, i32* %53
store i32 %11, i32* %54
store i32 %12, i32* %55
store i32 %13, i32* %56
store i32 %14, i32* %57
store i32 %15, i32* %58
store i32 %16, i32* %59
store i32 %17, i32* %60
store i32 %18, i32* %61
store i32 %19, i32* %62
store i32 %20, i32* %63
store i32 %21, i32* %64
store i32 %22, i32* %65
store i32 %23, i32* %66
store i32 %24, i32* %67
store i32 %25, i32* %68
store i32 %26, i32* %69
store i32 %27, i32* %70
store i32 %28, i32* %71
store i32 %29, i32* %72
store i32 %30, i32* %73
store i32 %31, i32* %74
store i32 %32, i32* %75
store i32 %33, i32* %76
store i32 %34, i32* %77
store i32 %35, i32* %78
store i32 %36, i32* %79
store i32 %37, i32* %80
store i32 %38, i32* %81
store i32 %39, i32* %82
store i32 %40, i32* %83
store i32 %41, i32* %84
%85 = load i32, i32* %43
%86 = load i32, i32* %44
%87 = add nsw i32 %85, %86
%88 = load i32, i32* %45
%89 = add nsw i32 %87, %88
%90 = load i32, i32* %46
%91 = add nsw i32 %89, %90
%92 = load i32, i32* %47
%93 = add nsw i32 %91, %92
%94 = load i32, i32* %48
%95 = add nsw i32 %93, %94
%96 = load i32, i32* %49
%97 = add nsw i32 %95, %96
%98 = load i32, i32* %50
%99 = add nsw i32 %97, %98
%100 = load i32, i32* %51
%101 = add nsw i32 %99, %100
%102 = load i32, i32* %52
%103 = add nsw i32 %101, %102
%104 = load i32, i32* %53
%105 = add nsw i32 %103, %104
%106 = load i32, i32* %54
%107 = add nsw i32 %105, %106
%108 = load i32, i32* %55
%109 = add nsw i32 %107, %108
%110 = load i32, i32* %56
%111 = add nsw i32 %109, %110
%112 = load i32, i32* %57
%113 = add nsw i32 %111, %112
%114 = load i32, i32* %58
%115 = add nsw i32 %113, %114
%116 = load i32, i32* %59
%117 = add nsw i32 %115, %116
%118 = load i32, i32* %60
%119 = add nsw i32 %117, %118
%120 = load i32, i32* %61
%121 = add nsw i32 %119, %120
%122 = load i32, i32* %62
%123 = add nsw i32 %121, %122
%124 = load i32, i32* %63
%125 = add nsw i32 %123, %124
%126 = load i32, i32* %64
%127 = add nsw i32 %125, %126
%128 = load i32, i32* %65
%129 = add nsw i32 %127, %128
%130 = load i32, i32* %66
%131 = add nsw i32 %129, %130
%132 = load i32, i32* %67
%133 = add nsw i32 %131, %132
%134 = load i32, i32* %68
%135 = add nsw i32 %133, %134
%136 = load i32, i32* %69
%137 = add nsw i32 %135, %136
%138 = load i32, i32* %70
%139 = add nsw i32 %137, %138
%140 = load i32, i32* %71
%141 = add nsw i32 %139, %140
%142 = load i32, i32* %72
%143 = add nsw i32 %141, %142
%144 = load i32, i32* %73
%145 = add nsw i32 %143, %144
%146 = load i32, i32* %74
%147 = add nsw i32 %145, %146
%148 = load i32, i32* %75
%149 = add nsw i32 %147, %148
%150 = load i32, i32* %76
%151 = add nsw i32 %149, %150
%152 = load i32, i32* %77
%153 = add nsw i32 %151, %152
%154 = load i32, i32* %78
%155 = add nsw i32 %153, %154
%156 = load i32, i32* %79
%157 = add nsw i32 %155, %156
%158 = load i32, i32* %80
%159 = add nsw i32 %157, %158
%160 = load i32, i32* %81
%161 = add nsw i32 %159, %160
%162 = load i32, i32* %82
%163 = add nsw i32 %161, %162
%164 = load i32, i32* %83
%165 = add nsw i32 %163, %164
%166 = load i32, i32* %84
%167 = add nsw i32 %165, %166
ret i32 %167
}

LLVM IR (-O2):
define i32 @ffi_test_31(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21, i32 %22, i32 %23, i32 %24, i32 %25, i32 %26, i32 %27, i32 %28, i32 %29, i32 %30, i32 %31, i32 %32, i32 %33, i32 %34, i32 %35, i32 %36, i32 %37, i32 %38, i32 %39, i32 %40, i32 %41) {
%43 = add nsw i32 %1, %0
%44 = add nsw i32 %43, %2
%45 = add nsw i32 %44, %3
%46 = add nsw i32 %45, %4
%47 = add nsw i32 %46, %5
%48 = add nsw i32 %47, %6
%49 = add nsw i32 %48, %7
%50 = add nsw i32 %49, %8
%51 = add nsw i32 %50, %9
%52 = add nsw i32 %51, %10
%53 = add nsw i32 %52, %11
%54 = add nsw i32 %53, %12
%55 = add nsw i32 %54, %13
%56 = add nsw i32 %55, %14
%57 = add nsw i32 %56, %15
%58 = add nsw i32 %57, %16
%59 = add nsw i32 %58, %17
%60 = add nsw i32 %59, %18
%61 = add nsw i32 %60, %19
%62 = add nsw i32 %61, %20
%63 = add nsw i32 %62, %21
%64 = add nsw i32 %63, %22
%65 = add nsw i32 %64, %23
%66 = add nsw i32 %65, %24
%67 = add nsw i32 %66, %25
%68 = add nsw i32 %67, %26
%69 = add nsw i32 %68, %27
%70 = add nsw i32 %69, %28
%71 = add nsw i32 %70, %29
%72 = add nsw i32 %71, %30
%73 = add nsw i32 %72, %31
%74 = add nsw i32 %73, %32
%75 = add nsw i32 %74, %33
%76 = add nsw i32 %75, %34
%77 = add nsw i32 %76, %35
%78 = add nsw i32 %77, %36
%79 = add nsw i32 %78, %37
%80 = add nsw i32 %79, %38
%81 = add nsw i32 %80, %39
%82 = add nsw i32 %81, %40
%83 = add nsw i32 %82, %41
ret i32 %83
}