void Tester() {
  __complex short a1;
  __complex int a2;
  __complex float a3;
  __complex double a4;
  short a5;
  int a6;
  float a7;
  double a8;
  int x11 = a1 + a1;
  int x12 = a1 + a2;
  int x13 = a1 + a3;
  int x14 = a1 + a4;
  int x15 = a1 + a5;
  int x16 = a1 + a6;
  int x17 = a1 + a7;
  int x18 = a1 + a8;
  ;
  int x21 = a2 + a1;
  int x22 = a2 + a2;
  int x23 = a2 + a3;
  int x24 = a2 + a4;
  int x25 = a2 + a5;
  int x26 = a2 + a6;
  int x27 = a2 + a7;
  int x28 = a2 + a8;
  ;
  int x31 = a3 + a1;
  int x32 = a3 + a2;
  int x33 = a3 + a3;
  int x34 = a3 + a4;
  int x35 = a3 + a5;
  int x36 = a3 + a6;
  int x37 = a3 + a7;
  int x38 = a3 + a8;
  ;
  int x41 = a4 + a1;
  int x42 = a4 + a2;
  int x43 = a4 + a3;
  int x44 = a4 + a4;
  int x45 = a4 + a5;
  int x46 = a4 + a6;
  int x47 = a4 + a7;
  int x48 = a4 + a8;
  ;
  int x51 = a5 + a1;
  int x52 = a5 + a2;
  int x53 = a5 + a3;
  int x54 = a5 + a4;
  int x55 = a5 + a5;
  int x56 = a5 + a6;
  int x57 = a5 + a7;
  int x58 = a5 + a8;
  ;
  int x61 = a6 + a1;
  int x62 = a6 + a2;
  int x63 = a6 + a3;
  int x64 = a6 + a4;
  int x65 = a6 + a5;
  int x66 = a6 + a6;
  int x67 = a6 + a7;
  int x68 = a6 + a8;
  ;
  int x71 = a7 + a1;
  int x72 = a7 + a2;
  int x73 = a7 + a3;
  int x74 = a7 + a4;
  int x75 = a7 + a5;
  int x76 = a7 + a6;
  int x77 = a7 + a7;
  int x78 = a7 + a8;
  ;
  int x81 = a8 + a1;
  int x82 = a8 + a2;
  int x83 = a8 + a3;
  int x84 = a8 + a4;
  int x85 = a8 + a5;
  int x86 = a8 + a6;
  int x87 = a8 + a7;
  int x88 = a8 + a8;
  ;
}


x86 assembly (clang, -O0):
<Tester>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movzwl -0x8(%rbp),%eax
add    %eax,%eax
cwtl
mov    %eax,-0x44(%rbp)
movswl -0x8(%rbp),%eax
mov    -0x10(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x48(%rbp)
movswl -0x8(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x4c(%rbp)
movswl -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x50(%rbp)
movswl -0x8(%rbp),%eax
movswl -0x2a(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x54(%rbp)
movswl -0x8(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
movswl -0x8(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  -0x34(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x5c(%rbp)
movswl -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x60(%rbp)
mov    -0x10(%rbp),%eax
movswl -0x8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x64(%rbp)
mov    -0x10(%rbp),%eax
add    %eax,%eax
mov    %eax,-0x68(%rbp)
cvtsi2ssl -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x6c(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x70(%rbp)
mov    -0x10(%rbp),%eax
movswl -0x2a(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x74(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x78(%rbp)
cvtsi2ssl -0x10(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x7c(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x80(%rbp)
movss  -0x18(%rbp),%xmm0
movswl -0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x84(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x88(%rbp)
movss  -0x18(%rbp),%xmm0
addss  %xmm0,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x8c(%rbp)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x90(%rbp)
movss  -0x18(%rbp),%xmm0
movswl -0x2a(%rbp),%eax
cvtsi2ss %eax,%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x94(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x30(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x98(%rbp)
movss  -0x18(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x9c(%rbp)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xa0(%rbp)
movsd  -0x28(%rbp),%xmm0
movswl -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xa4(%rbp)
movsd  -0x28(%rbp),%xmm0
cvtsi2sdl -0x10(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xa8(%rbp)
movsd  -0x28(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xac(%rbp)
movsd  -0x28(%rbp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xb0(%rbp)
movsd  -0x28(%rbp),%xmm0
movswl -0x2a(%rbp),%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xb4(%rbp)
movsd  -0x28(%rbp),%xmm0
cvtsi2sdl -0x30(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xb8(%rbp)
movsd  -0x28(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xbc(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xc0(%rbp)
movswl -0x2a(%rbp),%eax
movswl -0x8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xc4(%rbp)
movswl -0x2a(%rbp),%eax
mov    -0x10(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xc8(%rbp)
movswl -0x2a(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xcc(%rbp)
movswl -0x2a(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xd0(%rbp)
movswl -0x2a(%rbp),%eax
add    %eax,%eax
mov    %eax,-0xd4(%rbp)
movswl -0x2a(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xd8(%rbp)
movswl -0x2a(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  -0x34(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xdc(%rbp)
movswl -0x2a(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xe0(%rbp)
mov    -0x30(%rbp),%eax
movswl -0x8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xe4(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x10(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xe8(%rbp)
cvtsi2ssl -0x30(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xec(%rbp)
cvtsi2sdl -0x30(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xf0(%rbp)
mov    -0x30(%rbp),%eax
movswl -0x2a(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xf4(%rbp)
mov    -0x30(%rbp),%eax
add    %eax,%eax
mov    %eax,-0xf8(%rbp)
cvtsi2ssl -0x30(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xfc(%rbp)
cvtsi2sdl -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x100(%rbp)
movss  -0x34(%rbp),%xmm0
movswl -0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x104(%rbp)
movss  -0x34(%rbp),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x108(%rbp)
movss  -0x34(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x10c(%rbp)
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x110(%rbp)
movss  -0x34(%rbp),%xmm0
movswl -0x2a(%rbp),%eax
cvtsi2ss %eax,%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x114(%rbp)
movss  -0x34(%rbp),%xmm0
cvtsi2ssl -0x30(%rbp),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x118(%rbp)
movss  -0x34(%rbp),%xmm0
addss  %xmm0,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x11c(%rbp)
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x120(%rbp)
movsd  -0x40(%rbp),%xmm0
movswl -0x8(%rbp),%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x124(%rbp)
movsd  -0x40(%rbp),%xmm0
cvtsi2sdl -0x10(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x128(%rbp)
movsd  -0x40(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x12c(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x130(%rbp)
movsd  -0x40(%rbp),%xmm0
movswl -0x2a(%rbp),%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x134(%rbp)
movsd  -0x40(%rbp),%xmm0
cvtsi2sdl -0x30(%rbp),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x138(%rbp)
movsd  -0x40(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x13c(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x140(%rbp)
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Tester>:
ret

LLVM IR (-O0):
define void @Tester() {
%1 = alloca { i16, i16 }
%2 = alloca { i32, i32 }
%3 = alloca { float, float }
%4 = alloca { double, double }
%5 = alloca i16
%6 = alloca i32
%7 = alloca float
%8 = alloca double
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%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 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%74 = load i16, i16* %73
%75 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%76 = load i16, i16* %75
%77 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%78 = load i16, i16* %77
%79 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%80 = load i16, i16* %79
%81 = add i16 %74, %78
%82 = add i16 %76, %80
%83 = sext i16 %81 to i32
store i32 %83, i32* %9
%84 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%85 = load i16, i16* %84
%86 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%87 = load i16, i16* %86
%88 = sext i16 %85 to i32
%89 = sext i16 %87 to i32
%90 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%91 = load i32, i32* %90
%92 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%93 = load i32, i32* %92
%94 = add i32 %88, %91
%95 = add i32 %89, %93
store i32 %94, i32* %10
%96 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%97 = load i16, i16* %96
%98 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%99 = load i16, i16* %98
%100 = sitofp i16 %97 to float
%101 = sitofp i16 %99 to float
%102 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%103 = load float, float* %102
%104 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%105 = load float, float* %104
%106 = fadd float %100, %103
%107 = fadd float %101, %105
%108 = fptosi float %106 to i32
store i32 %108, i32* %11
%109 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%110 = load i16, i16* %109
%111 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%112 = load i16, i16* %111
%113 = sitofp i16 %110 to double
%114 = sitofp i16 %112 to double
%115 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%116 = load double, double* %115
%117 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%118 = load double, double* %117
%119 = fadd double %113, %116
%120 = fadd double %114, %118
%121 = fptosi double %119 to i32
store i32 %121, i32* %12
%122 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%123 = load i16, i16* %122
%124 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%125 = load i16, i16* %124
%126 = sext i16 %123 to i32
%127 = sext i16 %125 to i32
%128 = load i16, i16* %5
%129 = sext i16 %128 to i32
%130 = add i32 %126, %129
%131 = add i32 %127, 0
store i32 %130, i32* %13
%132 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%133 = load i16, i16* %132
%134 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%135 = load i16, i16* %134
%136 = sext i16 %133 to i32
%137 = sext i16 %135 to i32
%138 = load i32, i32* %6
%139 = add i32 %136, %138
%140 = add i32 %137, 0
store i32 %139, i32* %14
%141 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%142 = load i16, i16* %141
%143 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%144 = load i16, i16* %143
%145 = sitofp i16 %142 to float
%146 = sitofp i16 %144 to float
%147 = load float, float* %7
%148 = fadd float %145, %147
%149 = fadd float %146, 0.000000e+00
%150 = fptosi float %148 to i32
store i32 %150, i32* %15
%151 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%152 = load i16, i16* %151
%153 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%154 = load i16, i16* %153
%155 = sitofp i16 %152 to double
%156 = sitofp i16 %154 to double
%157 = load double, double* %8
%158 = fadd double %155, %157
%159 = fadd double %156, 0.000000e+00
%160 = fptosi double %158 to i32
store i32 %160, i32* %16
%161 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%162 = load i32, i32* %161
%163 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%164 = load i32, i32* %163
%165 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%166 = load i16, i16* %165
%167 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%168 = load i16, i16* %167
%169 = sext i16 %166 to i32
%170 = sext i16 %168 to i32
%171 = add i32 %162, %169
%172 = add i32 %164, %170
store i32 %171, i32* %17
%173 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%174 = load i32, i32* %173
%175 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%176 = load i32, i32* %175
%177 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%178 = load i32, i32* %177
%179 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%180 = load i32, i32* %179
%181 = add i32 %174, %178
%182 = add i32 %176, %180
store i32 %181, i32* %18
%183 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%184 = load i32, i32* %183
%185 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%186 = load i32, i32* %185
%187 = sitofp i32 %184 to float
%188 = sitofp i32 %186 to float
%189 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%190 = load float, float* %189
%191 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%192 = load float, float* %191
%193 = fadd float %187, %190
%194 = fadd float %188, %192
%195 = fptosi float %193 to i32
store i32 %195, i32* %19
%196 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%197 = load i32, i32* %196
%198 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%199 = load i32, i32* %198
%200 = sitofp i32 %197 to double
%201 = sitofp i32 %199 to double
%202 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%203 = load double, double* %202
%204 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%205 = load double, double* %204
%206 = fadd double %200, %203
%207 = fadd double %201, %205
%208 = fptosi double %206 to i32
store i32 %208, i32* %20
%209 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%210 = load i32, i32* %209
%211 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%212 = load i32, i32* %211
%213 = load i16, i16* %5
%214 = sext i16 %213 to i32
%215 = add i32 %210, %214
%216 = add i32 %212, 0
store i32 %215, i32* %21
%217 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%218 = load i32, i32* %217
%219 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%220 = load i32, i32* %219
%221 = load i32, i32* %6
%222 = add i32 %218, %221
%223 = add i32 %220, 0
store i32 %222, i32* %22
%224 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%225 = load i32, i32* %224
%226 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%227 = load i32, i32* %226
%228 = sitofp i32 %225 to float
%229 = sitofp i32 %227 to float
%230 = load float, float* %7
%231 = fadd float %228, %230
%232 = fadd float %229, 0.000000e+00
%233 = fptosi float %231 to i32
store i32 %233, i32* %23
%234 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%235 = load i32, i32* %234
%236 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%237 = load i32, i32* %236
%238 = sitofp i32 %235 to double
%239 = sitofp i32 %237 to double
%240 = load double, double* %8
%241 = fadd double %238, %240
%242 = fadd double %239, 0.000000e+00
%243 = fptosi double %241 to i32
store i32 %243, i32* %24
%244 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%245 = load float, float* %244
%246 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%247 = load float, float* %246
%248 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%249 = load i16, i16* %248
%250 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%251 = load i16, i16* %250
%252 = sitofp i16 %249 to float
%253 = sitofp i16 %251 to float
%254 = fadd float %245, %252
%255 = fadd float %247, %253
%256 = fptosi float %254 to i32
store i32 %256, i32* %25
%257 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%258 = load float, float* %257
%259 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%260 = load float, float* %259
%261 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%262 = load i32, i32* %261
%263 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%264 = load i32, i32* %263
%265 = sitofp i32 %262 to float
%266 = sitofp i32 %264 to float
%267 = fadd float %258, %265
%268 = fadd float %260, %266
%269 = fptosi float %267 to i32
store i32 %269, i32* %26
%270 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%271 = load float, float* %270
%272 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%273 = load float, float* %272
%274 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%275 = load float, float* %274
%276 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%277 = load float, float* %276
%278 = fadd float %271, %275
%279 = fadd float %273, %277
%280 = fptosi float %278 to i32
store i32 %280, i32* %27
%281 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%282 = load float, float* %281
%283 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%284 = load float, float* %283
%285 = fpext float %282 to double
%286 = fpext float %284 to double
%287 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%288 = load double, double* %287
%289 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%290 = load double, double* %289
%291 = fadd double %285, %288
%292 = fadd double %286, %290
%293 = fptosi double %291 to i32
store i32 %293, i32* %28
%294 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%295 = load float, float* %294
%296 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%297 = load float, float* %296
%298 = load i16, i16* %5
%299 = sext i16 %298 to i32
%300 = sitofp i32 %299 to float
%301 = fadd float %295, %300
%302 = fadd float %297, 0.000000e+00
%303 = fptosi float %301 to i32
store i32 %303, i32* %29
%304 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%305 = load float, float* %304
%306 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%307 = load float, float* %306
%308 = load i32, i32* %6
%309 = sitofp i32 %308 to float
%310 = fadd float %305, %309
%311 = fadd float %307, 0.000000e+00
%312 = fptosi float %310 to i32
store i32 %312, i32* %30
%313 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%314 = load float, float* %313
%315 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%316 = load float, float* %315
%317 = load float, float* %7
%318 = fadd float %314, %317
%319 = fptosi float %318 to i32
store i32 %319, i32* %31
%320 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%321 = load float, float* %320
%322 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%323 = load float, float* %322
%324 = fpext float %321 to double
%325 = fpext float %323 to double
%326 = load double, double* %8
%327 = fadd double %324, %326
%328 = fptosi double %327 to i32
store i32 %328, i32* %32
%329 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%330 = load double, double* %329
%331 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%332 = load double, double* %331
%333 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%334 = load i16, i16* %333
%335 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%336 = load i16, i16* %335
%337 = sitofp i16 %334 to double
%338 = sitofp i16 %336 to double
%339 = fadd double %330, %337
%340 = fadd double %332, %338
%341 = fptosi double %339 to i32
store i32 %341, i32* %33
%342 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%343 = load double, double* %342
%344 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%345 = load double, double* %344
%346 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%347 = load i32, i32* %346
%348 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%349 = load i32, i32* %348
%350 = sitofp i32 %347 to double
%351 = sitofp i32 %349 to double
%352 = fadd double %343, %350
%353 = fadd double %345, %351
%354 = fptosi double %352 to i32
store i32 %354, i32* %34
%355 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%356 = load double, double* %355
%357 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%358 = load double, double* %357
%359 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%360 = load float, float* %359
%361 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%362 = load float, float* %361
%363 = fpext float %360 to double
%364 = fpext float %362 to double
%365 = fadd double %356, %363
%366 = fadd double %358, %364
%367 = fptosi double %365 to i32
store i32 %367, i32* %35
%368 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%369 = load double, double* %368
%370 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%371 = load double, double* %370
%372 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%373 = load double, double* %372
%374 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%375 = load double, double* %374
%376 = fadd double %369, %373
%377 = fadd double %371, %375
%378 = fptosi double %376 to i32
store i32 %378, i32* %36
%379 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%380 = load double, double* %379
%381 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%382 = load double, double* %381
%383 = load i16, i16* %5
%384 = sext i16 %383 to i32
%385 = sitofp i32 %384 to double
%386 = fadd double %380, %385
%387 = fadd double %382, 0.000000e+00
%388 = fptosi double %386 to i32
store i32 %388, i32* %37
%389 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%390 = load double, double* %389
%391 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%392 = load double, double* %391
%393 = load i32, i32* %6
%394 = sitofp i32 %393 to double
%395 = fadd double %390, %394
%396 = fadd double %392, 0.000000e+00
%397 = fptosi double %395 to i32
store i32 %397, i32* %38
%398 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%399 = load double, double* %398
%400 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%401 = load double, double* %400
%402 = load float, float* %7
%403 = fpext float %402 to double
%404 = fadd double %399, %403
%405 = fptosi double %404 to i32
store i32 %405, i32* %39
%406 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%407 = load double, double* %406
%408 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%409 = load double, double* %408
%410 = load double, double* %8
%411 = fadd double %407, %410
%412 = fptosi double %411 to i32
store i32 %412, i32* %40
%413 = load i16, i16* %5
%414 = sext i16 %413 to i32
%415 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%416 = load i16, i16* %415
%417 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%418 = load i16, i16* %417
%419 = sext i16 %416 to i32
%420 = sext i16 %418 to i32
%421 = add i32 %414, %419
%422 = add i32 0, %420
store i32 %421, i32* %41
%423 = load i16, i16* %5
%424 = sext i16 %423 to i32
%425 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%426 = load i32, i32* %425
%427 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%428 = load i32, i32* %427
%429 = add i32 %424, %426
%430 = add i32 0, %428
store i32 %429, i32* %42
%431 = load i16, i16* %5
%432 = sext i16 %431 to i32
%433 = sitofp i32 %432 to float
%434 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%435 = load float, float* %434
%436 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%437 = load float, float* %436
%438 = fadd float %433, %435
%439 = fadd float 0.000000e+00, %437
%440 = fptosi float %438 to i32
store i32 %440, i32* %43
%441 = load i16, i16* %5
%442 = sext i16 %441 to i32
%443 = sitofp i32 %442 to double
%444 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%445 = load double, double* %444
%446 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%447 = load double, double* %446
%448 = fadd double %443, %445
%449 = fadd double 0.000000e+00, %447
%450 = fptosi double %448 to i32
store i32 %450, i32* %44
%451 = load i16, i16* %5
%452 = sext i16 %451 to i32
%453 = load i16, i16* %5
%454 = sext i16 %453 to i32
%455 = add nsw i32 %452, %454
store i32 %455, i32* %45
%456 = load i16, i16* %5
%457 = sext i16 %456 to i32
%458 = load i32, i32* %6
%459 = add nsw i32 %457, %458
store i32 %459, i32* %46
%460 = load i16, i16* %5
%461 = sext i16 %460 to i32
%462 = sitofp i32 %461 to float
%463 = load float, float* %7
%464 = fadd float %462, %463
%465 = fptosi float %464 to i32
store i32 %465, i32* %47
%466 = load i16, i16* %5
%467 = sext i16 %466 to i32
%468 = sitofp i32 %467 to double
%469 = load double, double* %8
%470 = fadd double %468, %469
%471 = fptosi double %470 to i32
store i32 %471, i32* %48
%472 = load i32, i32* %6
%473 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%474 = load i16, i16* %473
%475 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%476 = load i16, i16* %475
%477 = sext i16 %474 to i32
%478 = sext i16 %476 to i32
%479 = add i32 %472, %477
%480 = add i32 0, %478
store i32 %479, i32* %49
%481 = load i32, i32* %6
%482 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%483 = load i32, i32* %482
%484 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%485 = load i32, i32* %484
%486 = add i32 %481, %483
%487 = add i32 0, %485
store i32 %486, i32* %50
%488 = load i32, i32* %6
%489 = sitofp i32 %488 to float
%490 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%491 = load float, float* %490
%492 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%493 = load float, float* %492
%494 = fadd float %489, %491
%495 = fadd float 0.000000e+00, %493
%496 = fptosi float %494 to i32
store i32 %496, i32* %51
%497 = load i32, i32* %6
%498 = sitofp i32 %497 to double
%499 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%500 = load double, double* %499
%501 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%502 = load double, double* %501
%503 = fadd double %498, %500
%504 = fadd double 0.000000e+00, %502
%505 = fptosi double %503 to i32
store i32 %505, i32* %52
%506 = load i32, i32* %6
%507 = load i16, i16* %5
%508 = sext i16 %507 to i32
%509 = add nsw i32 %506, %508
store i32 %509, i32* %53
%510 = load i32, i32* %6
%511 = load i32, i32* %6
%512 = add nsw i32 %510, %511
store i32 %512, i32* %54
%513 = load i32, i32* %6
%514 = sitofp i32 %513 to float
%515 = load float, float* %7
%516 = fadd float %514, %515
%517 = fptosi float %516 to i32
store i32 %517, i32* %55
%518 = load i32, i32* %6
%519 = sitofp i32 %518 to double
%520 = load double, double* %8
%521 = fadd double %519, %520
%522 = fptosi double %521 to i32
store i32 %522, i32* %56
%523 = load float, float* %7
%524 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%525 = load i16, i16* %524
%526 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%527 = load i16, i16* %526
%528 = sitofp i16 %525 to float
%529 = sitofp i16 %527 to float
%530 = fadd float %523, %528
%531 = fadd float 0.000000e+00, %529
%532 = fptosi float %530 to i32
store i32 %532, i32* %57
%533 = load float, float* %7
%534 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%535 = load i32, i32* %534
%536 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%537 = load i32, i32* %536
%538 = sitofp i32 %535 to float
%539 = sitofp i32 %537 to float
%540 = fadd float %533, %538
%541 = fadd float 0.000000e+00, %539
%542 = fptosi float %540 to i32
store i32 %542, i32* %58
%543 = load float, float* %7
%544 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%545 = load float, float* %544
%546 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%547 = load float, float* %546
%548 = fadd float %543, %545
%549 = fptosi float %548 to i32
store i32 %549, i32* %59
%550 = load float, float* %7
%551 = fpext float %550 to double
%552 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%553 = load double, double* %552
%554 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%555 = load double, double* %554
%556 = fadd double %551, %553
%557 = fptosi double %556 to i32
store i32 %557, i32* %60
%558 = load float, float* %7
%559 = load i16, i16* %5
%560 = sext i16 %559 to i32
%561 = sitofp i32 %560 to float
%562 = fadd float %558, %561
%563 = fptosi float %562 to i32
store i32 %563, i32* %61
%564 = load float, float* %7
%565 = load i32, i32* %6
%566 = sitofp i32 %565 to float
%567 = fadd float %564, %566
%568 = fptosi float %567 to i32
store i32 %568, i32* %62
%569 = load float, float* %7
%570 = load float, float* %7
%571 = fadd float %569, %570
%572 = fptosi float %571 to i32
store i32 %572, i32* %63
%573 = load float, float* %7
%574 = fpext float %573 to double
%575 = load double, double* %8
%576 = fadd double %574, %575
%577 = fptosi double %576 to i32
store i32 %577, i32* %64
%578 = load double, double* %8
%579 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 0
%580 = load i16, i16* %579
%581 = getelementptr inbounds { i16, i16 }, { i16, i16 }* %1, i32 0, i32 1
%582 = load i16, i16* %581
%583 = sitofp i16 %580 to double
%584 = sitofp i16 %582 to double
%585 = fadd double %578, %583
%586 = fadd double 0.000000e+00, %584
%587 = fptosi double %585 to i32
store i32 %587, i32* %65
%588 = load double, double* %8
%589 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 0
%590 = load i32, i32* %589
%591 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %2, i32 0, i32 1
%592 = load i32, i32* %591
%593 = sitofp i32 %590 to double
%594 = sitofp i32 %592 to double
%595 = fadd double %588, %593
%596 = fadd double 0.000000e+00, %594
%597 = fptosi double %595 to i32
store i32 %597, i32* %66
%598 = load double, double* %8
%599 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 0
%600 = load float, float* %599
%601 = getelementptr inbounds { float, float }, { float, float }* %3, i32 0, i32 1
%602 = load float, float* %601
%603 = fpext float %600 to double
%604 = fpext float %602 to double
%605 = fadd double %598, %603
%606 = fptosi double %605 to i32
store i32 %606, i32* %67
%607 = load double, double* %8
%608 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 0
%609 = load double, double* %608
%610 = getelementptr inbounds { double, double }, { double, double }* %4, i32 0, i32 1
%611 = load double, double* %610
%612 = fadd double %607, %609
%613 = fptosi double %612 to i32
store i32 %613, i32* %68
%614 = load double, double* %8
%615 = load i16, i16* %5
%616 = sext i16 %615 to i32
%617 = sitofp i32 %616 to double
%618 = fadd double %614, %617
%619 = fptosi double %618 to i32
store i32 %619, i32* %69
%620 = load double, double* %8
%621 = load i32, i32* %6
%622 = sitofp i32 %621 to double
%623 = fadd double %620, %622
%624 = fptosi double %623 to i32
store i32 %624, i32* %70
%625 = load double, double* %8
%626 = load float, float* %7
%627 = fpext float %626 to double
%628 = fadd double %625, %627
%629 = fptosi double %628 to i32
store i32 %629, i32* %71
%630 = load double, double* %8
%631 = load double, double* %8
%632 = fadd double %630, %631
%633 = fptosi double %632 to i32
store i32 %633, i32* %72
ret void
}

LLVM IR (-O2):
define void @Tester() {
ret void
}