62 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2 3declare void @bar()4 5define void @foo(ptr %A, i64 %p) {6start:7 br label %next8 9next:10 %cmpA = icmp sle i64 %p, 011 br i1 %cmpA, label %error, label %ok12 13error:14 call void @bar()15 br label %merge16 17ok:18 br label %merge19 20merge:21 %phi = phi i64 [0, %error], [1, %ok]22 store float 42.0, ptr %A23 %cmp = icmp eq i64 %phi, %p24 br i1 %cmp, label %loop, label %exit25 26loop:27 %indvar = phi i64 [0, %merge], [%indvar.next, %loop]28 store float 42.0, ptr %A29 %indvar.next = add i64 %indvar, 130 %cmp2 = icmp sle i64 %indvar, 102431 br i1 %cmp2, label %loop, label %exit32 33exit:34 ret void35}36 37; CHECK: Statements {38; CHECK-NEXT: Stmt_ok39; CHECK-NEXT: Domain :=40; CHECK-NEXT: [p] -> { Stmt_ok[] : p > 0 };41; CHECK-NEXT: Schedule :=42; CHECK-NEXT: [p] -> { Stmt_ok[] -> [0, 0] };43; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1]44; CHECK-NEXT: [p] -> { Stmt_ok[] -> MemRef_phi__phi[] };45; CHECK-NEXT: Stmt_merge46; CHECK-NEXT: Domain :=47; CHECK-NEXT: [p] -> { Stmt_merge[] };48; CHECK-NEXT: Schedule :=49; CHECK-NEXT: [p] -> { Stmt_merge[] -> [1, 0] };50; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 1]51; CHECK-NEXT: [p] -> { Stmt_merge[] -> MemRef_phi__phi[] };52; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]53; CHECK-NEXT: [p] -> { Stmt_merge[] -> MemRef_A[0] };54; CHECK-NEXT: Stmt_loop55; CHECK-NEXT: Domain :=56; CHECK-NEXT: [p] -> { Stmt_loop[i0] : p = 1 and 0 <= i0 <= 1025 };57; CHECK-NEXT: Schedule :=58; CHECK-NEXT: [p] -> { Stmt_loop[i0] -> [2, i0] };59; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]60; CHECK-NEXT: [p] -> { Stmt_loop[i0] -> MemRef_A[0] };61; CHECK-NEXT: }62