; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s ; ; The SCoP contains a loop with multiple exit blocks (BBs after leaving ; the loop). The current implementation of deriving their domain derives ; only a common domain for all of the exit blocks. We disabled loops with ; multiple exit blocks until this is fixed. ; XFAIL: * ; ; CHECK: Domain := ; CHECK: { Stmt_if_end[i0] : 0 <= i0 <= 1024 }; ; ; void f(int *A) { ; int i = 0; ; do { ; if (i > 1024) ; break; ; A[i] = i; ; i++; ; } while (i > 0); ; } ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define void @f(i32* %A) { entry: br label %do.body do.body: ; preds = %do.cond, %entry %indvars.iv = phi i64 [ %indvars.iv.next, %do.cond ], [ 0, %entry ] %cmp = icmp sgt i64 %indvars.iv, 1024 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %do.body br label %do.end if.end: ; preds = %do.body %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv %tmp = trunc i64 %indvars.iv to i32 store i32 %tmp, i32* %arrayidx, align 4 br label %do.cond do.cond: ; preds = %if.end %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp2 = icmp sgt i64 %indvars.iv.next, 0 br i1 %cmp2, label %do.body, label %do.end.loopexit do.end.loopexit: ; preds = %do.cond br label %do.end do.end: ; preds = %do.end.loopexit, %if.then ret void }