; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt %s -passes=loop-deletion -S | FileCheck %s --check-prefixes=CHECK

target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.Loc.95 = type { %class.Domain.96 }
%class.Domain.96 = type { %class.DomainBase.97 }
%class.DomainBase.97 = type { [3 x %struct.WrapNoInit] }
%struct.WrapNoInit = type { %class.Loc }
%class.Loc = type { %class.Domain.67 }
%class.Domain.67 = type { %class.DomainBase.68 }
%class.DomainBase.68 = type { i32 }

define dso_local void @_ZSt8_DestroyIP3LocILi3EES1_EvT_S3_RSaIT0_E(%class.Loc.95* %0) #0 {
; CHECK-LABEL: @_ZSt8_DestroyIP3LocILi3EES1_EvT_S3_RSaIT0_E(
; CHECK-NEXT:    br label [[_ZST8_DESTROYIP3LOCILI3EEEVT_S3__EXIT:%.*]]
; CHECK:       _ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit:
; CHECK-NEXT:    ret void
;
  br label %2

2:                                                ; preds = %4, %1
  %.0.i.i = phi %class.Loc.95* [ undef, %1 ], [ %5, %4 ]
  %3 = icmp ne %class.Loc.95* %.0.i.i, %0
  br i1 %3, label %4, label %_ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit

4:                                                ; preds = %2
  call void @llvm.assume(i1 true) [ "align"(%class.Loc.95* %.0.i.i, i64 4) ]
  %5 = getelementptr inbounds %class.Loc.95, %class.Loc.95* %.0.i.i, i32 1
  br label %2

_ZSt8_DestroyIP3LocILi3EEEvT_S3_.exit:            ; preds = %2
  ret void
}

declare void @llvm.assume(i1) #1

attributes #0 = { "target-cpu"="x86-64" }
attributes #1 = { willreturn readnone norecurse nocapture nofree }
