|  | ; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s | 
|  | ; | 
|  | ;    float foo(float sum, float A[]) { | 
|  | ; | 
|  | ;      for (long i = 0; i < 100; i++) | 
|  | ;        sum += A[i]; | 
|  | ; | 
|  | ;      return sum; | 
|  | ;    } | 
|  |  | 
|  | ; CHECK:      Statements { | 
|  | ; CHECK-NEXT:     Stmt_next | 
|  | ; CHECK-NEXT:         Domain := | 
|  | ; CHECK-NEXT:             { Stmt_next[] }; | 
|  | ; CHECK-NEXT:         Schedule := | 
|  | ; CHECK-NEXT:             { Stmt_next[] -> [0, 0] }; | 
|  | ; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_next[] -> MemRef_sum[] }; | 
|  | ; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_next[] -> MemRef_phisum__phi[] }; | 
|  | ; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_next[] -> MemRef_phisummerge[] }; | 
|  | ; CHECK-NEXT:     Stmt_bb1 | 
|  | ; CHECK-NEXT:         Domain := | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] : 0 <= i0 <= 100 }; | 
|  | ; CHECK-NEXT:         Schedule := | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] -> [1, i0] }; | 
|  | ; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] -> MemRef_phisum__phi[] }; | 
|  | ; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] -> MemRef_phisum__phi[] }; | 
|  | ; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0] | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] -> MemRef_A[i0] }; | 
|  | ; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 1] | 
|  | ; CHECK-NEXT:             { Stmt_bb1[i0] -> MemRef_phisummerge[] }; | 
|  | ; CHECK-NEXT: } | 
|  |  | 
|  | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | 
|  |  | 
|  | define float @foo(float %sum, ptr %A) { | 
|  | bb: | 
|  | br label %next | 
|  |  | 
|  | next: | 
|  | br i1 true, label %bb1, label %bb7 | 
|  |  | 
|  | bb1: | 
|  | %i = phi i64 [ 0, %next ], [ %i.next, %bb1 ] | 
|  | %phisum = phi float [ %sum, %next ], [ %tmp5, %bb1 ] | 
|  | %tmp = getelementptr inbounds float, ptr %A, i64 %i | 
|  | %tmp4 = load float, ptr %tmp, align 4 | 
|  | %tmp5 = fadd float %phisum, %tmp4 | 
|  | %i.next = add nuw nsw i64 %i, 1 | 
|  | %exitcond = icmp ne i64 %i, 100 | 
|  | br i1 %exitcond, label %bb1, label %bb7 | 
|  |  | 
|  | bb7: | 
|  | %phisummerge = phi float [%phisum, %bb1], [0.0, %next] | 
|  | ret float %phisummerge | 
|  | } |