63 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2 3; Verify that we do not allow PHI nodes such as %phi, if they reference an error4; block and are used by anything else than a terminator instruction.5 6; CHECK: Statements {7; CHECK-NEXT: Stmt_loop8; CHECK-NEXT: Domain :=9; CHECK-NEXT: [p] -> { Stmt_loop[i0] : p >= 13 and 0 <= i0 <= 1025 };10; CHECK-NEXT: Schedule :=11; CHECK-NEXT: [p] -> { Stmt_loop[i0] -> [i0] };12; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]13; CHECK-NEXT: [p] -> { Stmt_loop[i0] -> MemRef_X[0] };14; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1]15; CHECK-NEXT: [p] -> { Stmt_loop[i0] -> MemRef_phi[] };16; CHECK-NEXT: }17 18declare void @bar()19 20define void @foo(ptr %X, i64 %p) {21entry:22 br label %br23 24br:25 %cmp1 = icmp sle i64 %p, 1226 br i1 %cmp1, label %A, label %br227 28br2:29 %cmp3 = icmp sle i64 %p, 1230 br i1 %cmp3, label %cond, label %loop31 32loop:33 %indvar = phi i64 [0, %br2], [%indvar.next, %loop]34 %indvar.next = add nsw i64 %indvar, 135 store float 41.0, ptr %X36 %cmp2 = icmp sle i64 %indvar, 102437 br i1 %cmp2, label %loop, label %merge38 39cond:40 br label %cond241 42cond2:43 call void @bar()44 br label %merge45 46merge:47 %phi = phi i1 [false, %cond2], [true, %loop]48 %add = add i1 %phi, 149 br i1 %add, label %A, label %B50 51A:52 store float 42.0, ptr %X53 br label %exit54 55B:56 call void @bar()57 store float 41.0, ptr %X58 br label %exit59 60exit:61 ret void62}63