llvm/llvm/test/CodeGen/X86/2009-09-22-CoalescerBug.ll

; RUN: llc < %s -mtriple=x86_64-apple-darwin10

define i32 @main(i32 %argc, ptr nocapture %argv) nounwind ssp {
entry:
  br i1 undef, label %bb, label %bb1

bb:                                               ; preds = %entry
  ret i32 3

bb1:                                              ; preds = %entry
  br i1 undef, label %bb3, label %bb2

bb2:                                              ; preds = %bb1
  ret i32 3

bb3:                                              ; preds = %bb1
  br i1 undef, label %bb.i18, label %quantum_getwidth.exit

bb.i18:                                           ; preds = %bb.i18, %bb3
  br i1 undef, label %bb.i18, label %quantum_getwidth.exit

quantum_getwidth.exit:                            ; preds = %bb.i18, %bb3
  br i1 undef, label %bb4, label %bb6.preheader

bb4:                                              ; preds = %quantum_getwidth.exit
  unreachable

bb6.preheader:                                    ; preds = %quantum_getwidth.exit
  br i1 undef, label %bb.i1, label %bb1.i2

bb.i1:                                            ; preds = %bb6.preheader
  unreachable

bb1.i2:                                           ; preds = %bb6.preheader
  br i1 undef, label %bb2.i, label %bb3.i4

bb2.i:                                            ; preds = %bb1.i2
  unreachable

bb3.i4:                                           ; preds = %bb1.i2
  br i1 undef, label %quantum_new_qureg.exit, label %bb4.i

bb4.i:                                            ; preds = %bb3.i4
  unreachable

quantum_new_qureg.exit:                           ; preds = %bb3.i4
  br i1 undef, label %bb9, label %bb11.thread

bb11.thread:                                      ; preds = %quantum_new_qureg.exit
  %.cast.i = zext i32 undef to i64                ; <i64> [#uses=1]
  br label %bb.i37

bb9:                                              ; preds = %quantum_new_qureg.exit
  unreachable

bb.i37:                                           ; preds = %bb.i37, %bb11.thread
  %0 = load i64, ptr undef, align 8                   ; <i64> [#uses=1]
  %1 = shl i64 %0, %.cast.i                       ; <i64> [#uses=1]
  store i64 %1, ptr undef, align 8
  br i1 undef, label %bb.i37, label %quantum_addscratch.exit

quantum_addscratch.exit:                          ; preds = %bb.i37
  br i1 undef, label %bb12.preheader, label %bb14

bb12.preheader:                                   ; preds = %quantum_addscratch.exit
  unreachable

bb14:                                             ; preds = %quantum_addscratch.exit
  br i1 undef, label %bb17, label %bb.nph

bb.nph:                                           ; preds = %bb14
  unreachable

bb17:                                             ; preds = %bb14
  br i1 undef, label %bb1.i7, label %quantum_measure.exit

bb1.i7:                                           ; preds = %bb17
  br label %quantum_measure.exit

quantum_measure.exit:                             ; preds = %bb1.i7, %bb17
  switch i32 undef, label %bb21 [
    i32 -1, label %bb18
    i32 0, label %bb20
  ]

bb18:                                             ; preds = %quantum_measure.exit
  unreachable

bb20:                                             ; preds = %quantum_measure.exit
  unreachable

bb21:                                             ; preds = %quantum_measure.exit
  br i1 undef, label %quantum_frac_approx.exit, label %bb1.i

bb1.i:                                            ; preds = %bb21
  unreachable

quantum_frac_approx.exit:                         ; preds = %bb21
  br i1 undef, label %bb25, label %bb26

bb25:                                             ; preds = %quantum_frac_approx.exit
  unreachable

bb26:                                             ; preds = %quantum_frac_approx.exit
  br i1 undef, label %quantum_gcd.exit, label %bb.i

bb.i:                                             ; preds = %bb.i, %bb26
  br i1 undef, label %quantum_gcd.exit, label %bb.i

quantum_gcd.exit:                                 ; preds = %bb.i, %bb26
  br i1 undef, label %bb32, label %bb33

bb32:                                             ; preds = %quantum_gcd.exit
  br i1 undef, label %bb.i.i, label %quantum_delete_qureg.exit

bb.i.i:                                           ; preds = %bb32
  ret i32 0

quantum_delete_qureg.exit:                        ; preds = %bb32
  ret i32 0

bb33:                                             ; preds = %quantum_gcd.exit
  unreachable
}