; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
;
; llvm.org/PR25438
; After loop versioning, a dominance check of a non-affine subregion's exit node
; causes the dominance check to always fail any block in the scop. The
; subregion's exit block has become polly_merge_new_and_old, which also receives
; the control flow of the generated code. This would cause that any value for
; implicit stores is assumed to be not from the scop.
;
; This checks that the stored value is indeed from the generated code.
;
; CHECK-LABEL: polly.stmt.do.body.entry:
; CHECK:        a.phiops.reload = load i32, ptr %a.phiops
;
; CHECK-LABEL: polly.stmt.polly.merge_new_and_old.exit:
; CHECK:         store i32 %polly.a, ptr %a.s2a

define void @func() {
entry:
  br label %while.body

while.body:
  br label %do.body

do.body:
  %a = phi i32 [ undef, %while.body ], [ %b, %end_b ]
  %cond = or i1 undef, undef
  br i1 %cond, label %end_a, label %if_a

if_a:
  br label %end_a

end_a:
  br i1 undef, label %if_b, label %end_b

if_b:
  br label %end_b

end_b:
  %b = phi i32 [ undef, %if_b ], [ %a, %end_a ]
  br i1 false, label %do.body, label %do.end

do.end:
  br label %return

return:
  ret void
}
