; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -basic-aa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 | FileCheck %s

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.8.0"

%"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960" = type { i32, i32 }

define void @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960"* nocapture %info) {
; CHECK-LABEL: @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br i1 undef, label [[IF_ELSE:%.*]], label [[IF_THEN:%.*]]
; CHECK:       if.then:
; CHECK-NEXT:    ret void
; CHECK:       if.else:
; CHECK-NEXT:    [[M_NUMCONSTRAINTROWS4:%.*]] = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960", %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960"* [[INFO:%.*]], i64 0, i32 0
; CHECK-NEXT:    [[NUB5:%.*]] = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960", %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960"* [[INFO]], i64 0, i32 1
; CHECK-NEXT:    br i1 undef, label [[LAND_LHS_TRUE_I_1:%.*]], label [[IF_THEN7_1:%.*]]
; CHECK:       land.lhs.true.i.1:
; CHECK-NEXT:    br i1 undef, label [[FOR_INC_1:%.*]], label [[IF_THEN7_1]]
; CHECK:       if.then7.1:
; CHECK-NEXT:    [[INC_1:%.*]] = add nsw i32 0, 1
; CHECK-NEXT:    store i32 [[INC_1]], i32* [[M_NUMCONSTRAINTROWS4]], align 4
; CHECK-NEXT:    [[DEC_1:%.*]] = add nsw i32 6, -1
; CHECK-NEXT:    store i32 [[DEC_1]], i32* [[NUB5]], align 4
; CHECK-NEXT:    br label [[FOR_INC_1]]
; CHECK:       for.inc.1:
; CHECK-NEXT:    [[TMP0:%.*]] = phi i32 [ [[DEC_1]], [[IF_THEN7_1]] ], [ 6, [[LAND_LHS_TRUE_I_1]] ]
; CHECK-NEXT:    [[TMP1:%.*]] = phi i32 [ [[INC_1]], [[IF_THEN7_1]] ], [ 0, [[LAND_LHS_TRUE_I_1]] ]
; CHECK-NEXT:    [[INC_2:%.*]] = add nsw i32 [[TMP1]], 1
; CHECK-NEXT:    store i32 [[INC_2]], i32* [[M_NUMCONSTRAINTROWS4]], align 4
; CHECK-NEXT:    [[DEC_2:%.*]] = add nsw i32 [[TMP0]], -1
; CHECK-NEXT:    store i32 [[DEC_2]], i32* [[NUB5]], align 4
; CHECK-NEXT:    unreachable
;
entry:
  br i1 undef, label %if.else, label %if.then

if.then:                                          ; preds = %entry
  ret void

if.else:                                          ; preds = %entry
  %m_numConstraintRows4 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960", %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960"* %info, i64 0, i32 0
  %nub5 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960", %"struct.btTypedConstraint::btConstraintInfo1.17.157.357.417.477.960"* %info, i64 0, i32 1
  br i1 undef, label %land.lhs.true.i.1, label %if.then7.1

land.lhs.true.i.1:                                ; preds = %if.else
  br i1 undef, label %for.inc.1, label %if.then7.1

if.then7.1:                                       ; preds = %land.lhs.true.i.1, %if.else
  %inc.1 = add nsw i32 0, 1
  store i32 %inc.1, i32* %m_numConstraintRows4, align 4
  %dec.1 = add nsw i32 6, -1
  store i32 %dec.1, i32* %nub5, align 4
  br label %for.inc.1

for.inc.1:                                        ; preds = %if.then7.1, %land.lhs.true.i.1
  %0 = phi i32 [ %dec.1, %if.then7.1 ], [ 6, %land.lhs.true.i.1 ]
  %1 = phi i32 [ %inc.1, %if.then7.1 ], [ 0, %land.lhs.true.i.1 ]
  %inc.2 = add nsw i32 %1, 1
  store i32 %inc.2, i32* %m_numConstraintRows4, align 4
  %dec.2 = add nsw i32 %0, -1
  store i32 %dec.2, i32* %nub5, align 4
  unreachable
}

%class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332 = type { float, [3 x %class.btVector3.5.30.65.90.115.140.175.185.260.280.330], [3 x %class.btVector3.5.30.65.90.115.140.175.185.260.280.330], %class.btVector4.7.32.67.92.117.142.177.187.262.282.331, %class.btVector4.7.32.67.92.117.142.177.187.262.282.331, %class.btVector3.5.30.65.90.115.140.175.185.260.280.330, %class.btVector3.5.30.65.90.115.140.175.185.260.280.330, %class.btVector3.5.30.65.90.115.140.175.185.260.280.330, %class.btVector3.5.30.65.90.115.140.175.185.260.280.330, [4 x float], float, float, [4 x float], float, float, [16 x %class.btVector3.5.30.65.90.115.140.175.185.260.280.330], [16 x %class.btVector3.5.30.65.90.115.140.175.185.260.280.330], [16 x %class.btVector3.5.30.65.90.115.140.175.185.260.280.330] }
%class.btVector3.5.30.65.90.115.140.175.185.260.280.330 = type { [4 x float] }
%class.btVector4.7.32.67.92.117.142.177.187.262.282.331 = type { %class.btVector3.5.30.65.90.115.140.175.185.260.280.330 }

define void @_ZN30GIM_TRIANGLE_CALCULATION_CACHE18triangle_collisionERK9btVector3S2_S2_fS2_S2_S2_fR25GIM_TRIANGLE_CONTACT_DATA(%class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332* %this) {
; CHECK-LABEL: @_ZN30GIM_TRIANGLE_CALCULATION_CACHE18triangle_collisionERK9btVector3S2_S2_fS2_S2_S2_fR25GIM_TRIANGLE_CONTACT_DATA(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[ARRAYIDX26:%.*]] = getelementptr inbounds [[CLASS_GIM_TRIANGLE_CALCULATION_CACHE_9_34_69_94_119_144_179_189_264_284_332:%.*]], %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332* [[THIS:%.*]], i64 0, i32 2, i64 0, i32 0, i64 1
; CHECK-NEXT:    [[ARRAYIDX36:%.*]] = getelementptr inbounds [[CLASS_GIM_TRIANGLE_CALCULATION_CACHE_9_34_69_94_119_144_179_189_264_284_332]], %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332* [[THIS]], i64 0, i32 2, i64 0, i32 0, i64 2
; CHECK-NEXT:    [[TMP0:%.*]] = load float, float* [[ARRAYIDX36]], align 4
; CHECK-NEXT:    [[ADD587:%.*]] = fadd float undef, undef
; CHECK-NEXT:    [[SUB600:%.*]] = fsub float [[ADD587]], undef
; CHECK-NEXT:    store float [[SUB600]], float* undef, align 4
; CHECK-NEXT:    [[SUB613:%.*]] = fsub float [[ADD587]], [[SUB600]]
; CHECK-NEXT:    store float [[SUB613]], float* [[ARRAYIDX26]], align 4
; CHECK-NEXT:    [[ADD626:%.*]] = fadd float [[TMP0]], undef
; CHECK-NEXT:    [[SUB639:%.*]] = fsub float [[ADD626]], undef
; CHECK-NEXT:    [[SUB652:%.*]] = fsub float [[ADD626]], [[SUB639]]
; CHECK-NEXT:    store float [[SUB652]], float* [[ARRAYIDX36]], align 4
; CHECK-NEXT:    br i1 undef, label [[IF_ELSE1609:%.*]], label [[IF_THEN1595:%.*]]
; CHECK:       if.then1595:
; CHECK-NEXT:    br i1 undef, label [[RETURN:%.*]], label [[FOR_BODY_LR_PH_I_I1702:%.*]]
; CHECK:       for.body.lr.ph.i.i1702:
; CHECK-NEXT:    unreachable
; CHECK:       if.else1609:
; CHECK-NEXT:    unreachable
; CHECK:       return:
; CHECK-NEXT:    ret void
;
entry:
  %arrayidx26 = getelementptr inbounds %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332, %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332* %this, i64 0, i32 2, i64 0, i32 0, i64 1
  %arrayidx36 = getelementptr inbounds %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332, %class.GIM_TRIANGLE_CALCULATION_CACHE.9.34.69.94.119.144.179.189.264.284.332* %this, i64 0, i32 2, i64 0, i32 0, i64 2
  %0 = load float, float* %arrayidx36, align 4
  %add587 = fadd float undef, undef
  %sub600 = fsub float %add587, undef
  store float %sub600, float* undef, align 4
  %sub613 = fsub float %add587, %sub600
  store float %sub613, float* %arrayidx26, align 4
  %add626 = fadd float %0, undef
  %sub639 = fsub float %add626, undef
  %sub652 = fsub float %add626, %sub639
  store float %sub652, float* %arrayidx36, align 4
  br i1 undef, label %if.else1609, label %if.then1595

if.then1595:                                      ; preds = %entry
  br i1 undef, label %return, label %for.body.lr.ph.i.i1702

for.body.lr.ph.i.i1702:                           ; preds = %if.then1595
  unreachable

if.else1609:                                      ; preds = %entry
  unreachable

return:                                           ; preds = %if.then1595
  ret void
}

define void @_Z8dBoxBox2RK9btVector3PKfS1_S1_S3_S1_RS_PfPiiP12dContactGeomiRN36btDiscreteCollisionDetectorInterface6ResultE() {
; CHECK-LABEL: @_Z8dBoxBox2RK9btVector3PKfS1_S1_S3_S1_RS_PfPiiP12dContactGeomiRN36btDiscreteCollisionDetectorInterface6ResultE(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br i1 undef, label [[RETURN:%.*]], label [[IF_END:%.*]]
; CHECK:       if.end:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END111:%.*]]
; CHECK:       if.end111:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END136:%.*]]
; CHECK:       if.end136:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END162:%.*]]
; CHECK:       if.end162:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END189:%.*]]
; CHECK:       if.end189:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END216:%.*]]
; CHECK:       if.end216:
; CHECK-NEXT:    br i1 undef, label [[IF_THEN218:%.*]], label [[IF_END225:%.*]]
; CHECK:       if.then218:
; CHECK-NEXT:    br label [[IF_END225]]
; CHECK:       if.end225:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END248:%.*]]
; CHECK:       if.end248:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END304:%.*]]
; CHECK:       if.end304:
; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END361:%.*]]
; CHECK:       if.end361:
; CHECK-NEXT:    br i1 undef, label [[IF_THEN370:%.*]], label [[IF_END395:%.*]]
; CHECK:       if.then370:
; CHECK-NEXT:    br i1 undef, label [[IF_THEN374:%.*]], label [[IF_END395]]
; CHECK:       if.then374:
; CHECK-NEXT:    br label [[IF_END395]]
; CHECK:       if.end395:
; CHECK-NEXT:    unreachable
; CHECK:       return:
; CHECK-NEXT:    ret void
;
entry:
  %add8.i2343 = fadd float undef, undef
  %add8.i2381 = fadd float undef, undef
  br i1 undef, label %return, label %if.end

if.end:                                           ; preds = %entry
  br i1 undef, label %return, label %if.end111

if.end111:                                        ; preds = %if.end
  br i1 undef, label %return, label %if.end136

if.end136:                                        ; preds = %if.end111
  br i1 undef, label %return, label %if.end162

if.end162:                                        ; preds = %if.end136
  br i1 undef, label %return, label %if.end189

if.end189:                                        ; preds = %if.end162
  br i1 undef, label %return, label %if.end216

if.end216:                                        ; preds = %if.end189
  br i1 undef, label %if.then218, label %if.end225

if.then218:                                       ; preds = %if.end216
  br label %if.end225

if.end225:                                        ; preds = %if.then218, %if.end216
  br i1 undef, label %return, label %if.end248

if.end248:                                        ; preds = %if.end225
  br i1 undef, label %return, label %if.end304

if.end304:                                        ; preds = %if.end248
  %mul341 = fmul float undef, %add8.i2343
  %mul344 = fmul float undef, %add8.i2381
  %sub345 = fsub float %mul341, %mul344
  br i1 undef, label %return, label %if.end361

if.end361:                                        ; preds = %if.end304
  %mul364 = fmul float %add8.i2381, %add8.i2381
  br i1 undef, label %if.then370, label %if.end395

if.then370:                                       ; preds = %if.end361
  br i1 undef, label %if.then374, label %if.end395

if.then374:                                       ; preds = %if.then370
  %cmp392 = fcmp olt float %sub345, 0.000000e+00
  br label %if.end395

if.end395:                                        ; preds = %if.then374, %if.then370, %if.end361
  unreachable

return:                                           ; preds = %if.end304, %if.end248, %if.end225, %if.end189, %if.end162, %if.end136, %if.end111, %if.end, %entry
  ret void
}
