; RUN: llc < %s -march=x86 -disable-code-place | FileCheck %s
;
; Test RegistersDefinedFromSameValue. We have multiple copies of the same vreg:
; while.body85.i:
;   vreg1 = copy vreg2
;   vreg2 = add
; critical edge from land.lhs.true.i -> if.end117.i:
;   vreg27 = vreg2
; critical edge from land.lhs.true103.i -> if.end117.i:
;   vreg27 = vreg2
; if.then108.i:
;   vreg27 = vreg1
;
; Prior to fixing PR10920 401.bzip miscompile, the coalescer would
; consider vreg1 and vreg27 to be copies of the same value. It would
; then remove one of the critical edge copes, which cannot safely be removed.
;
; CHECK: # %while.body85.i
; CHECK-NOT: # %
; CHECK-NOT: add
; CHECK: movl %[[POSTR:e[abcdxi]+]], %[[PRER:e[abcdxi]+]]
; CHECK: addl %{{.*}}, %[[POSTR]]
; CHECK: # %while.end.i
; CHECK: movl %[[POSTR]], %[[USER:e[abcdxi]+]]
; CHECK: # %land.lhs.true.i
; CHECK: movl %[[POSTR]], %[[USER]]
; CHECK: # %land.lhs.true103.i
; CHECK: movl %[[POSTR]], %[[USER]]
; CHECK: # %if.then108.i
; [[PRER] live out, so nothing on this path should define it.
; CHECK-NOT: , %[[PRER]]
; CHECK: # %if.end117.i

target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32"

@.str3 = external unnamed_addr constant [59 x i8], align 1

define void @BZ2_compressBlock() nounwind ssp {
entry:
  br i1 undef, label %if.then68, label %if.end85

if.then68:                                        ; preds = %entry
  br label %for.body.i.i

for.body.i.i:                                     ; preds = %for.inc.i.i, %if.then68
  br i1 undef, label %for.inc.i.i, label %if.then.i.i

if.then.i.i:                                      ; preds = %for.body.i.i
  br label %for.inc.i.i

for.inc.i.i:                                      ; preds = %if.then.i.i, %for.body.i.i
  br i1 undef, label %makeMaps_e.exit.i, label %for.body.i.i

makeMaps_e.exit.i:                                ; preds = %for.inc.i.i
  br i1 undef, label %for.cond19.preheader.i, label %for.cond.for.cond19.preheader_crit_edge.i

for.cond.for.cond19.preheader_crit_edge.i:        ; preds = %makeMaps_e.exit.i
  unreachable

for.cond19.preheader.i:                           ; preds = %makeMaps_e.exit.i
  br i1 undef, label %for.body25.lr.ph.i, label %for.cond33.preheader.i

for.body25.lr.ph.i:                               ; preds = %for.cond19.preheader.i
  br label %for.body25.i

for.cond33.preheader.i:                           ; preds = %for.body25.i, %for.cond19.preheader.i
  br i1 undef, label %if.then.i, label %if.end.i

for.body25.i:                                     ; preds = %for.body25.i, %for.body25.lr.ph.i
  br i1 undef, label %for.body25.i, label %for.cond33.preheader.i

if.then.i:                                        ; preds = %for.cond33.preheader.i
  br label %if.end.i

if.end.i:                                         ; preds = %if.then.i, %for.cond33.preheader.i
  br i1 undef, label %for.inc27.us.5.i, label %for.end30.i

for.end30.i:                                      ; preds = %for.inc27.us.5.i, %if.end.i
  br i1 undef, label %if.end36.i, label %if.then35.i

if.then35.i:                                      ; preds = %for.end30.i
  unreachable

if.end36.i:                                       ; preds = %for.end30.i
  %sub83.i = add nsw i32 undef, 1
  br label %while.body.i188

for.cond182.preheader.i:                          ; preds = %for.end173.i
  br i1 undef, label %for.inc220.us.i, label %while.body300.preheader.i

while.body.i188:                                  ; preds = %for.end173.i, %if.end36.i
  %gs.0526.i = phi i32 [ 0, %if.end36.i ], [ %add177.i, %for.end173.i ]
  %or.cond514517.i = and i1 false, undef
  br i1 %or.cond514517.i, label %while.body85.i, label %if.end117.i

while.body85.i:                                   ; preds = %while.body85.i, %while.body.i188
  %aFreq.0518.i = phi i32 [ %add93.i, %while.body85.i ], [ 0, %while.body.i188 ]
  %inc87.i = add nsw i32 0, 1
  %tmp91.i = load i32* undef, align 4, !tbaa !0
  %add93.i = add nsw i32 %tmp91.i, %aFreq.0518.i
  %or.cond514.i = and i1 undef, false
  br i1 %or.cond514.i, label %while.body85.i, label %while.end.i

while.end.i:                                      ; preds = %while.body85.i
  br i1 undef, label %land.lhs.true.i, label %if.end117.i

land.lhs.true.i:                                  ; preds = %while.end.i
  br i1 undef, label %land.lhs.true103.i, label %if.end117.i

land.lhs.true103.i:                               ; preds = %land.lhs.true.i
  br i1 undef, label %if.then108.i, label %if.end117.i

if.then108.i:                                     ; preds = %land.lhs.true103.i
  br label %if.end117.i

if.end117.i:                                      ; preds = %if.then108.i, %land.lhs.true103.i, %land.lhs.true.i, %while.end.i, %while.body.i188
  %aFreq.1.i = phi i32 [ %aFreq.0518.i, %if.then108.i ], [ %add93.i, %land.lhs.true103.i ], [ %add93.i, %land.lhs.true.i ], [ %add93.i, %while.end.i ], [ 0, %while.body.i188 ]
  %ge.1.i = phi i32 [ 0, %if.then108.i ], [ %inc87.i, %land.lhs.true103.i ], [ %inc87.i, %land.lhs.true.i ], [ %inc87.i, %while.end.i ], [ 0, %while.body.i188 ]
  br i1 undef, label %if.then122.i, label %for.cond138.preheader.i

if.then122.i:                                     ; preds = %if.end117.i
  call void (...)* @fprintf(i32 undef, i32 %gs.0526.i, i32 %ge.1.i, i32 %aFreq.1.i, double undef) nounwind
  br label %for.cond138.preheader.i

for.cond138.preheader.i:                          ; preds = %if.then122.i, %if.end117.i
  br i1 undef, label %for.body143.lr.ph.i, label %for.end173.i

for.body143.lr.ph.i:                              ; preds = %for.cond138.preheader.i
  br label %for.body143.i

for.body143.i:                                    ; preds = %for.body143.i, %for.body143.lr.ph.i
  br i1 undef, label %for.end173.i, label %for.body143.i

for.end173.i:                                     ; preds = %for.body143.i, %for.cond138.preheader.i
  %add177.i = add nsw i32 %ge.1.i, 1
  %cmp73.i = icmp sgt i32 undef, 0
  br i1 %cmp73.i, label %while.body.i188, label %for.cond182.preheader.i

for.inc220.us.i:                                  ; preds = %for.cond182.preheader.i
  unreachable

while.body300.preheader.i:                        ; preds = %for.cond182.preheader.i
  br i1 undef, label %for.end335.i, label %while.end2742.i

for.end335.i:                                     ; preds = %for.end2039.i, %while.body300.preheader.i
  br label %for.body2021.i

for.body2021.i:                                   ; preds = %for.body2021.i, %for.end335.i
  br i1 undef, label %for.body2021.i, label %for.end2039.i

for.end2039.i:                                    ; preds = %for.body2021.i
  br label %for.end335.i

while.end2742.i:                                  ; preds = %while.body300.preheader.i
  br i1 undef, label %if.then2748.i, label %for.body2778.i

if.then2748.i:                                    ; preds = %while.end2742.i
  unreachable

for.body2778.i:                                   ; preds = %while.end2742.i
  unreachable

for.inc27.us.5.i:                                 ; preds = %if.end.i
  br label %for.end30.i

if.end85:                                         ; preds = %entry
  ret void
}

declare void @fprintf(...) nounwind

!0 = metadata !{metadata !"int", metadata !1}
!1 = metadata !{metadata !"omnipotent char", metadata !2}
!2 = metadata !{metadata !"Simple C/C++ TBAA", null}
