[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