[polly] r275055 - Add test case forgotten in r275053

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 11 05:15:07 PDT 2016


Author: grosser
Date: Mon Jul 11 07:15:06 2016
New Revision: 275055

URL: http://llvm.org/viewvc/llvm-project?rev=275055&view=rev
Log:
Add test case forgotten in r275053

Added:
    polly/trunk/test/ScopInfo/invariant_load_stmt_domain.ll

Added: polly/trunk/test/ScopInfo/invariant_load_stmt_domain.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/invariant_load_stmt_domain.ll?rev=275055&view=auto
==============================================================================
--- polly/trunk/test/ScopInfo/invariant_load_stmt_domain.ll (added)
+++ polly/trunk/test/ScopInfo/invariant_load_stmt_domain.ll Mon Jul 11 07:15:06 2016
@@ -0,0 +1,59 @@
+; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
+
+; This test case verifies that the statement domain of the invariant access
+; is the universe. In earlier versions of Polly, we accidentally computed an
+; empty access domain which resulted in invariant accesses not being executed
+; and consequently undef values being used.
+
+; CHECK:  Invariant Accesses: {
+; CHECK-NEXT:          ReadAccess :=       [Reduction Type: NONE] [Scalar: 0]
+; CHECK-NEXT:              { Stmt_loop_next[i0] -> MemRef_a[1] };
+; CHECK-NEXT:          Execution Context: {  :  }
+; CHECK-NEXT:  }
+; CHECK-NEXT:  Context:
+; CHECK-NEXT:  {  :  }
+; CHECK-NEXT:  Assumed Context:
+; CHECK-NEXT:  {  :  }
+; CHECK-NEXT:  Invalid Context:
+; CHECK-NEXT:  {  : 1 = 0 }
+
+; CHECK:  Statements {
+; CHECK-NEXT:    Stmt_loop
+; CHECK-NEXT:          Domain :=
+; CHECK-NEXT:              { Stmt_loop[i0] : 0 <= i0 <= 1 };
+; CHECK-NEXT:          Schedule :=
+; CHECK-NEXT:              { Stmt_loop[i0] -> [i0, 0] };
+; CHECK-NEXT:          ReadAccess :=       [Reduction Type: NONE] [Scalar: 1]
+; CHECK-NEXT:              { Stmt_loop[i0] -> MemRef_val__phi[] };
+; CHECK-NEXT:          MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
+; CHECK-NEXT:              { Stmt_loop[i0] -> MemRef_B[i0] };
+; CHECK-NEXT:    Stmt_loop_next
+; CHECK-NEXT:          Domain :=
+; CHECK-NEXT:              { Stmt_loop_next[0] };
+; CHECK-NEXT:          Schedule :=
+; CHECK-NEXT:              { Stmt_loop_next[i0] -> [0, 1] };
+; CHECK-NEXT:          MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 1]
+; CHECK-NEXT:              { Stmt_loop_next[i0] -> MemRef_val__phi[] };
+; CHECK-NEXT:  }
+
+define void @foo(float* %a, float* noalias %B) {
+entry:
+  br label %loop
+
+loop:
+  %indvar = phi i64 [0, %entry], [%indvar.next, %loop.next]
+  %val = phi float [1.0, %entry], [%a.val, %loop.next]
+  %indvar.next = add nuw nsw i64 %indvar, 1
+  %ptr = getelementptr float, float* %B, i64 %indvar
+  store float %val, float* %ptr
+  %icmp = icmp eq i64 %indvar.next, 2
+  br i1 %icmp, label %ret, label %loop.next
+
+loop.next:
+  %Aptr = getelementptr float, float* %a, i64 %indvar.next
+  %a.val = load float, float* %Aptr
+  br label %loop
+
+ret:
+  ret void
+}




More information about the llvm-commits mailing list