void op_A_comp_symm_CD(double x[3], double phi1[3], double phi2[3],
                       double n1[3], double n2[3], double f1[3], double f2[3],
                       double xi, double C, double D) {
  double x1dotn1 = x[0] * n1[0] + x[1] * n1[1] + x[2] * n1[2];
  double x2dotn2 = -(x[0] * n2[0] + x[1] * n2[1] + x[2] * n2[2]);
  double x1dotf1 = x[0] * f1[0] + x[1] * f1[1] + x[2] * f1[2];
  double x2dotf2 = -(x[0] * f2[0] + x[1] * f2[1] + x[2] * f2[2]);
  double n1dotf1 = n1[0] * f1[0] + n1[1] * f1[1] + n1[2] * f1[2];
  double n2dotf2 = n2[0] * f2[0] + n2[1] * f2[1] + n2[2] * f2[2];
  for (int i = 0; i < 3; i++) {
    phi1[i] += -x[i] * (C * x2dotf2 * x2dotn2 + D * n2dotf2) +
               D * (f2[i] * x2dotn2 + n2[i] * x2dotf2);
    phi2[i] += x[i] * (C * x1dotf1 * x1dotn1 + D * n1dotf1) +
               D * (f1[i] * x1dotn1 + n1[i] * x1dotf1);
  }
}


x86 assembly (clang, -O0):
<op_A_comp_symm_CD>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movsd  %xmm0,-0x38(%rbp)
movsd  %xmm1,-0x40(%rbp)
movsd  %xmm2,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x28(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x7c(%rbp)
cmpl   $0x3,-0x7c(%rbp)
jge    1443 <op_A_comp_symm_CD+0x343>
mov    -0x8(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x68(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm1
mulsd  -0x78(%rbp),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x48(%rbp),%xmm1
mov    0x10(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
movsd  -0x58(%rbp),%xmm5
mov    -0x28(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
mulsd  -0x68(%rbp),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x7c(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x60(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x48(%rbp),%xmm1
mov    -0x30(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
movsd  -0x50(%rbp),%xmm5
mov    -0x20(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm4
mulsd  -0x60(%rbp),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x7c(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
jmp    131a <op_A_comp_symm_CD+0x21a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<op_A_comp_symm_CD>:
movsd  %xmm2,-0x8(%rsp)
movsd  (%rdi),%xmm2
movsd  0x8(%rdi),%xmm4
movsd  (%rcx),%xmm6
movsd  0x8(%rcx),%xmm3
movsd  %xmm3,-0x10(%rsp)
movapd %xmm4,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm2,%xmm3
mulsd  %xmm6,%xmm3
addsd  %xmm0,%xmm3
movsd  0x10(%rdi),%xmm15
movsd  0x10(%rcx),%xmm7
movapd %xmm15,%xmm13
mulsd  %xmm7,%xmm13
addsd  %xmm3,%xmm13
movsd  (%r8),%xmm5
movsd  %xmm5,-0x18(%rsp)
movsd  0x8(%r8),%xmm12
movapd %xmm4,%xmm3
mulsd  %xmm12,%xmm3
movapd %xmm2,%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm3,%xmm0
movsd  0x10(%r8),%xmm5
movapd %xmm15,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm0,%xmm3
movsd  (%r9),%xmm0
movsd  %xmm0,-0x20(%rsp)
movsd  0x8(%r9),%xmm9
movapd %xmm4,%xmm11
mulsd  %xmm9,%xmm11
movapd %xmm2,%xmm14
mulsd  %xmm0,%xmm14
addsd  %xmm11,%xmm14
movsd  0x10(%r9),%xmm8
movapd %xmm15,%xmm11
mulsd  %xmm8,%xmm11
addsd  %xmm14,%xmm11
mov    0x8(%rsp),%rax
movsd  0x8(%rax),%xmm0
mulsd  %xmm0,%xmm4
movsd  (%rax),%xmm14
movapd %xmm2,%xmm10
mulsd  %xmm14,%xmm10
addsd  %xmm4,%xmm10
movsd  0x10(%rax),%xmm4
mulsd  %xmm4,%xmm15
addsd  %xmm10,%xmm15
movsd  -0x10(%rsp),%xmm10
mulsd  %xmm9,%xmm10
mulsd  -0x20(%rsp),%xmm6
addsd  %xmm10,%xmm6
mulsd  %xmm8,%xmm7
addsd  %xmm6,%xmm7
mulsd  %xmm0,%xmm12
movsd  -0x18(%rsp),%xmm9
movapd %xmm9,%xmm0
mulsd  %xmm14,%xmm0
addsd  %xmm12,%xmm0
mulsd  %xmm4,%xmm5
movapd 0xdc3(%rip),%xmm8
xorpd  %xmm3,%xmm8
addsd  %xmm0,%xmm5
movapd %xmm15,%xmm6
mulsd  %xmm1,%xmm6
mulsd  %xmm3,%xmm6
movsd  -0x8(%rsp),%xmm3
mulsd  %xmm3,%xmm5
addsd  %xmm5,%xmm6
mulsd  %xmm11,%xmm1
mulsd  %xmm3,%xmm7
mulsd  %xmm13,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm8,%xmm0
mulsd  %xmm14,%xmm0
movapd %xmm9,%xmm4
mulsd  %xmm15,%xmm4
subsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm0
addsd  (%rsi),%xmm0
movsd  %xmm0,(%rsi)
movsd  (%rcx),%xmm0
mulsd  %xmm11,%xmm0
movsd  (%r9),%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  (%rdi),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  (%rdx),%xmm0
movsd  %xmm0,(%rdx)
movsd  0x8(%r8),%xmm0
mulsd  %xmm15,%xmm0
movsd  0x8(%rax),%xmm2
mulsd  %xmm8,%xmm2
subsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x8(%rdi),%xmm0
mulsd  %xmm6,%xmm0
subsd  %xmm0,%xmm2
addsd  0x8(%rsi),%xmm2
movsd  %xmm2,0x8(%rsi)
movsd  0x8(%rcx),%xmm0
mulsd  %xmm11,%xmm0
movsd  0x8(%r9),%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x8(%rdi),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  0x8(%rdx),%xmm0
movsd  %xmm0,0x8(%rdx)
movsd  0x10(%rax),%xmm0
mulsd  %xmm8,%xmm0
mulsd  0x10(%r8),%xmm15
subsd  %xmm15,%xmm0
mulsd  %xmm3,%xmm0
mulsd  0x10(%rdi),%xmm6
subsd  %xmm6,%xmm0
addsd  0x10(%rsi),%xmm0
movsd  %xmm0,0x10(%rsi)
mulsd  0x10(%rcx),%xmm11
mulsd  0x10(%r9),%xmm13
addsd  %xmm11,%xmm13
mulsd  %xmm3,%xmm13
mulsd  0x10(%rdi),%xmm1
addsd  %xmm13,%xmm1
addsd  0x10(%rdx),%xmm1
movsd  %xmm1,0x10(%rdx)
ret

LLVM IR (-O0):
define void @op_A_comp_symm_CD(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6, double %7, double %8, double %9) {
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca i32
store double* %0, double** %11
store double* %1, double** %12
store double* %2, double** %13
store double* %3, double** %14
store double* %4, double** %15
store double* %5, double** %16
store double* %6, double** %17
store double %7, double* %18
store double %8, double* %19
store double %9, double* %20
%28 = load double*, double** %11
%29 = getelementptr inbounds double, double* %28, i64 0
%30 = load double, double* %29
%31 = load double*, double** %14
%32 = getelementptr inbounds double, double* %31, i64 0
%33 = load double, double* %32
%34 = load double*, double** %11
%35 = getelementptr inbounds double, double* %34, i64 1
%36 = load double, double* %35
%37 = load double*, double** %14
%38 = getelementptr inbounds double, double* %37, i64 1
%39 = load double, double* %38
%40 = fmul double %36, %39
%41 = call double @llvm.fmuladd.f64(double %30, double %33, double %40)
%42 = load double*, double** %11
%43 = getelementptr inbounds double, double* %42, i64 2
%44 = load double, double* %43
%45 = load double*, double** %14
%46 = getelementptr inbounds double, double* %45, i64 2
%47 = load double, double* %46
%48 = call double @llvm.fmuladd.f64(double %44, double %47, double %41)
store double %48, double* %21
%49 = load double*, double** %11
%50 = getelementptr inbounds double, double* %49, i64 0
%51 = load double, double* %50
%52 = load double*, double** %15
%53 = getelementptr inbounds double, double* %52, i64 0
%54 = load double, double* %53
%55 = load double*, double** %11
%56 = getelementptr inbounds double, double* %55, i64 1
%57 = load double, double* %56
%58 = load double*, double** %15
%59 = getelementptr inbounds double, double* %58, i64 1
%60 = load double, double* %59
%61 = fmul double %57, %60
%62 = call double @llvm.fmuladd.f64(double %51, double %54, double %61)
%63 = load double*, double** %11
%64 = getelementptr inbounds double, double* %63, i64 2
%65 = load double, double* %64
%66 = load double*, double** %15
%67 = getelementptr inbounds double, double* %66, i64 2
%68 = load double, double* %67
%69 = call double @llvm.fmuladd.f64(double %65, double %68, double %62)
%70 = fneg double %69
store double %70, double* %22
%71 = load double*, double** %11
%72 = getelementptr inbounds double, double* %71, i64 0
%73 = load double, double* %72
%74 = load double*, double** %16
%75 = getelementptr inbounds double, double* %74, i64 0
%76 = load double, double* %75
%77 = load double*, double** %11
%78 = getelementptr inbounds double, double* %77, i64 1
%79 = load double, double* %78
%80 = load double*, double** %16
%81 = getelementptr inbounds double, double* %80, i64 1
%82 = load double, double* %81
%83 = fmul double %79, %82
%84 = call double @llvm.fmuladd.f64(double %73, double %76, double %83)
%85 = load double*, double** %11
%86 = getelementptr inbounds double, double* %85, i64 2
%87 = load double, double* %86
%88 = load double*, double** %16
%89 = getelementptr inbounds double, double* %88, i64 2
%90 = load double, double* %89
%91 = call double @llvm.fmuladd.f64(double %87, double %90, double %84)
store double %91, double* %23
%92 = load double*, double** %11
%93 = getelementptr inbounds double, double* %92, i64 0
%94 = load double, double* %93
%95 = load double*, double** %17
%96 = getelementptr inbounds double, double* %95, i64 0
%97 = load double, double* %96
%98 = load double*, double** %11
%99 = getelementptr inbounds double, double* %98, i64 1
%100 = load double, double* %99
%101 = load double*, double** %17
%102 = getelementptr inbounds double, double* %101, i64 1
%103 = load double, double* %102
%104 = fmul double %100, %103
%105 = call double @llvm.fmuladd.f64(double %94, double %97, double %104)
%106 = load double*, double** %11
%107 = getelementptr inbounds double, double* %106, i64 2
%108 = load double, double* %107
%109 = load double*, double** %17
%110 = getelementptr inbounds double, double* %109, i64 2
%111 = load double, double* %110
%112 = call double @llvm.fmuladd.f64(double %108, double %111, double %105)
%113 = fneg double %112
store double %113, double* %24
%114 = load double*, double** %14
%115 = getelementptr inbounds double, double* %114, i64 0
%116 = load double, double* %115
%117 = load double*, double** %16
%118 = getelementptr inbounds double, double* %117, i64 0
%119 = load double, double* %118
%120 = load double*, double** %14
%121 = getelementptr inbounds double, double* %120, i64 1
%122 = load double, double* %121
%123 = load double*, double** %16
%124 = getelementptr inbounds double, double* %123, i64 1
%125 = load double, double* %124
%126 = fmul double %122, %125
%127 = call double @llvm.fmuladd.f64(double %116, double %119, double %126)
%128 = load double*, double** %14
%129 = getelementptr inbounds double, double* %128, i64 2
%130 = load double, double* %129
%131 = load double*, double** %16
%132 = getelementptr inbounds double, double* %131, i64 2
%133 = load double, double* %132
%134 = call double @llvm.fmuladd.f64(double %130, double %133, double %127)
store double %134, double* %25
%135 = load double*, double** %15
%136 = getelementptr inbounds double, double* %135, i64 0
%137 = load double, double* %136
%138 = load double*, double** %17
%139 = getelementptr inbounds double, double* %138, i64 0
%140 = load double, double* %139
%141 = load double*, double** %15
%142 = getelementptr inbounds double, double* %141, i64 1
%143 = load double, double* %142
%144 = load double*, double** %17
%145 = getelementptr inbounds double, double* %144, i64 1
%146 = load double, double* %145
%147 = fmul double %143, %146
%148 = call double @llvm.fmuladd.f64(double %137, double %140, double %147)
%149 = load double*, double** %15
%150 = getelementptr inbounds double, double* %149, i64 2
%151 = load double, double* %150
%152 = load double*, double** %17
%153 = getelementptr inbounds double, double* %152, i64 2
%154 = load double, double* %153
%155 = call double @llvm.fmuladd.f64(double %151, double %154, double %148)
store double %155, double* %26
store i32 0, i32* %27
br label %156
156: ; preds = %233, %10
%157 = load i32, i32* %27
%158 = icmp slt i32 %157, 3
br i1 %158, label %159, label %236
159: ; preds = %156
%160 = load double*, double** %11
%161 = load i32, i32* %27
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds double, double* %160, i64 %162
%164 = load double, double* %163
%165 = fneg double %164
%166 = load double, double* %19
%167 = load double, double* %24
%168 = fmul double %166, %167
%169 = load double, double* %22
%170 = load double, double* %20
%171 = load double, double* %26
%172 = fmul double %170, %171
%173 = call double @llvm.fmuladd.f64(double %168, double %169, double %172)
%174 = load double, double* %20
%175 = load double*, double** %17
%176 = load i32, i32* %27
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds double, double* %175, i64 %177
%179 = load double, double* %178
%180 = load double, double* %22
%181 = load double*, double** %15
%182 = load i32, i32* %27
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds double, double* %181, i64 %183
%185 = load double, double* %184
%186 = load double, double* %24
%187 = fmul double %185, %186
%188 = call double @llvm.fmuladd.f64(double %179, double %180, double %187)
%189 = fmul double %174, %188
%190 = call double @llvm.fmuladd.f64(double %165, double %173, double %189)
%191 = load double*, double** %12
%192 = load i32, i32* %27
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds double, double* %191, i64 %193
%195 = load double, double* %194
%196 = fadd double %195, %190
store double %196, double* %194
%197 = load double*, double** %11
%198 = load i32, i32* %27
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds double, double* %197, i64 %199
%201 = load double, double* %200
%202 = load double, double* %19
%203 = load double, double* %23
%204 = fmul double %202, %203
%205 = load double, double* %21
%206 = load double, double* %20
%207 = load double, double* %25
%208 = fmul double %206, %207
%209 = call double @llvm.fmuladd.f64(double %204, double %205, double %208)
%210 = load double, double* %20
%211 = load double*, double** %16
%212 = load i32, i32* %27
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds double, double* %211, i64 %213
%215 = load double, double* %214
%216 = load double, double* %21
%217 = load double*, double** %14
%218 = load i32, i32* %27
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds double, double* %217, i64 %219
%221 = load double, double* %220
%222 = load double, double* %23
%223 = fmul double %221, %222
%224 = call double @llvm.fmuladd.f64(double %215, double %216, double %223)
%225 = fmul double %210, %224
%226 = call double @llvm.fmuladd.f64(double %201, double %209, double %225)
%227 = load double*, double** %13
%228 = load i32, i32* %27
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds double, double* %227, i64 %229
%231 = load double, double* %230
%232 = fadd double %231, %226
store double %232, double* %230
br label %233
233: ; preds = %159
%234 = load i32, i32* %27
%235 = add nsw i32 %234, 1
store i32 %235, i32* %27
br label %156
236: ; preds = %156
ret void
}

LLVM IR (-O2):
define void @op_A_comp_symm_CD(double* nocapture %0, double* nocapture %1, double* nocapture %2, double* nocapture %3, double* nocapture %4, double* nocapture %5, double* nocapture %6, double %7, double %8, double %9) {
%11 = load double, double* %0
%12 = load double, double* %3
%13 = getelementptr inbounds double, double* %0, i64 1
%14 = load double, double* %13
%15 = getelementptr inbounds double, double* %3, i64 1
%16 = load double, double* %15
%17 = fmul double %14, %16
%18 = tail call double @llvm.fmuladd.f64(double %11, double %12, double %17)
%19 = getelementptr inbounds double, double* %0, i64 2
%20 = load double, double* %19
%21 = getelementptr inbounds double, double* %3, i64 2
%22 = load double, double* %21
%23 = tail call double @llvm.fmuladd.f64(double %20, double %22, double %18)
%24 = load double, double* %4
%25 = getelementptr inbounds double, double* %4, i64 1
%26 = load double, double* %25
%27 = fmul double %14, %26
%28 = tail call double @llvm.fmuladd.f64(double %11, double %24, double %27)
%29 = getelementptr inbounds double, double* %4, i64 2
%30 = load double, double* %29
%31 = tail call double @llvm.fmuladd.f64(double %20, double %30, double %28)
%32 = fneg double %31
%33 = load double, double* %5
%34 = getelementptr inbounds double, double* %5, i64 1
%35 = load double, double* %34
%36 = fmul double %14, %35
%37 = tail call double @llvm.fmuladd.f64(double %11, double %33, double %36)
%38 = getelementptr inbounds double, double* %5, i64 2
%39 = load double, double* %38
%40 = tail call double @llvm.fmuladd.f64(double %20, double %39, double %37)
%41 = load double, double* %6
%42 = getelementptr inbounds double, double* %6, i64 1
%43 = load double, double* %42
%44 = fmul double %14, %43
%45 = tail call double @llvm.fmuladd.f64(double %11, double %41, double %44)
%46 = getelementptr inbounds double, double* %6, i64 2
%47 = load double, double* %46
%48 = tail call double @llvm.fmuladd.f64(double %20, double %47, double %45)
%49 = fneg double %48
%50 = fmul double %16, %35
%51 = tail call double @llvm.fmuladd.f64(double %12, double %33, double %50)
%52 = tail call double @llvm.fmuladd.f64(double %22, double %39, double %51)
%53 = fmul double %26, %43
%54 = tail call double @llvm.fmuladd.f64(double %24, double %41, double %53)
%55 = tail call double @llvm.fmuladd.f64(double %30, double %47, double %54)
%56 = fmul double %49, %8
%57 = fmul double %55, %9
%58 = tail call double @llvm.fmuladd.f64(double %56, double %32, double %57)
%59 = fmul double %40, %8
%60 = fmul double %52, %9
%61 = tail call double @llvm.fmuladd.f64(double %59, double %23, double %60)
%62 = fneg double %11
%63 = fmul double %24, %49
%64 = tail call double @llvm.fmuladd.f64(double %41, double %32, double %63)
%65 = fmul double %64, %9
%66 = tail call double @llvm.fmuladd.f64(double %62, double %58, double %65)
%67 = load double, double* %1
%68 = fadd double %67, %66
store double %68, double* %1
%69 = load double, double* %0
%70 = load double, double* %5
%71 = load double, double* %3
%72 = fmul double %40, %71
%73 = tail call double @llvm.fmuladd.f64(double %70, double %23, double %72)
%74 = fmul double %73, %9
%75 = tail call double @llvm.fmuladd.f64(double %69, double %61, double %74)
%76 = load double, double* %2
%77 = fadd double %76, %75
store double %77, double* %2
%78 = load double, double* %13
%79 = fneg double %78
%80 = load double, double* %42
%81 = load double, double* %25
%82 = fmul double %81, %49
%83 = tail call double @llvm.fmuladd.f64(double %80, double %32, double %82)
%84 = fmul double %83, %9
%85 = tail call double @llvm.fmuladd.f64(double %79, double %58, double %84)
%86 = getelementptr inbounds double, double* %1, i64 1
%87 = load double, double* %86
%88 = fadd double %87, %85
store double %88, double* %86
%89 = load double, double* %13
%90 = load double, double* %34
%91 = load double, double* %15
%92 = fmul double %40, %91
%93 = tail call double @llvm.fmuladd.f64(double %90, double %23, double %92)
%94 = fmul double %93, %9
%95 = tail call double @llvm.fmuladd.f64(double %89, double %61, double %94)
%96 = getelementptr inbounds double, double* %2, i64 1
%97 = load double, double* %96
%98 = fadd double %97, %95
store double %98, double* %96
%99 = load double, double* %19
%100 = fneg double %99
%101 = load double, double* %46
%102 = load double, double* %29
%103 = fmul double %102, %49
%104 = tail call double @llvm.fmuladd.f64(double %101, double %32, double %103)
%105 = fmul double %104, %9
%106 = tail call double @llvm.fmuladd.f64(double %100, double %58, double %105)
%107 = getelementptr inbounds double, double* %1, i64 2
%108 = load double, double* %107
%109 = fadd double %108, %106
store double %109, double* %107
%110 = load double, double* %19
%111 = load double, double* %38
%112 = load double, double* %21
%113 = fmul double %40, %112
%114 = tail call double @llvm.fmuladd.f64(double %111, double %23, double %113)
%115 = fmul double %114, %9
%116 = tail call double @llvm.fmuladd.f64(double %110, double %61, double %115)
%117 = getelementptr inbounds double, double* %2, i64 2
%118 = load double, double* %117
%119 = fadd double %118, %116
store double %119, double* %117
ret void
}