[polly] r297981 - Set Dependences::RED to be non-null once Dependences::calculateDependences()

Siddharth Bhat via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 16 13:06:49 PDT 2017


Author: bollu
Date: Thu Mar 16 15:06:49 2017
New Revision: 297981

URL: http://llvm.org/viewvc/llvm-project?rev=297981&view=rev
Log:
Set Dependences::RED to be non-null once Dependences::calculateDependences()
occurs, even if there is no actual reduction. This ensures correctness
with isl operations.

Added:
    polly/trunk/test/DependenceInfo/reduction_dependences_not_null.ll
Modified:
    polly/trunk/lib/Analysis/DependenceInfo.cpp

Modified: polly/trunk/lib/Analysis/DependenceInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/DependenceInfo.cpp?rev=297981&r1=297980&r2=297981&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/DependenceInfo.cpp (original)
+++ polly/trunk/lib/Analysis/DependenceInfo.cpp Thu Mar 16 15:06:49 2017
@@ -427,6 +427,7 @@ void Dependences::calculateDependences(S
   // reduction dependences or dependences that are finer than statement
   // level dependences.
   if (!HasReductions && Level == AL_Statement) {
+    RED = isl_union_map_empty(isl_union_map_get_space(RAW));
     TC_RED = isl_union_map_empty(isl_union_set_get_space(TaggedStmtDomain));
     isl_union_set_free(TaggedStmtDomain);
     return;

Added: polly/trunk/test/DependenceInfo/reduction_dependences_not_null.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/DependenceInfo/reduction_dependences_not_null.ll?rev=297981&view=auto
==============================================================================
--- polly/trunk/test/DependenceInfo/reduction_dependences_not_null.ll (added)
+++ polly/trunk/test/DependenceInfo/reduction_dependences_not_null.ll Thu Mar 16 15:06:49 2017
@@ -0,0 +1,34 @@
+; Test that the reduction dependences are always initialised, even in a case
+; where we have no reduction. If this object is NULL, then isl operations on
+; it will fail.
+; RUN: opt -S %loadPolly -polly-dependences -analyze < %s | FileCheck %s -check-prefix=VALUE
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+
+;     for(i = 0; i < 100; i++ )
+; S1:   A[i] = 2;
+
+define void @sequential_writes() {
+entry:
+  %A = alloca [200 x i32]
+  br label %S1
+
+S1:
+  %indvar.1 = phi i64 [ 0, %entry ], [ %indvar.next.1, %S1 ]
+  %arrayidx.1 = getelementptr [200 x i32], [200 x i32]* %A, i64 0, i64 %indvar.1
+  store i32 2, i32* %arrayidx.1
+  %indvar.next.1 = add i64 %indvar.1, 1
+  %exitcond.1 = icmp ne i64 %indvar.next.1, 100
+  br i1 %exitcond.1, label %S1, label %exit.1
+
+exit.1:
+  ret void
+}
+
+; VALUE:      RAW dependences:
+; VALUE-NEXT:     {  }
+; VALUE-NEXT: WAR dependences:
+; VALUE-NEXT:     {  }
+; VALUE-NEXT: WAW dependences:
+; VALUE-NEXT:     {  }
+; VALUE-NEXT: Reduction dependences:
+; VALUE-NEXT:     {  }




More information about the llvm-commits mailing list