[DeLICM] Export Known and Written to DeLICMTests. NFC.
authorMichael Kruse <llvm@meinersbur.de>
Thu, 13 Apr 2017 16:32:39 +0000 (16:32 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Thu, 13 Apr 2017 16:32:39 +0000 (16:32 +0000)
This will allow unittesting of new functionality based on
Known and Written.

llvm-svn: 300211

polly/include/polly/DeLICM.h
polly/lib/Transform/DeLICM.cpp
polly/unittests/DeLICM/DeLICMTest.cpp

index b70e1b8..8aeefb6 100644 (file)
@@ -33,9 +33,11 @@ llvm::Pass *createDeLICMPass();
 ///
 /// Used by unittesting.
 bool isConflicting(isl::union_set ExistingOccupied,
-                   isl::union_set ExistingUnused, isl::union_set ExistingWrites,
+                   isl::union_set ExistingUnused, isl::union_map ExistingKnown,
+                   isl::union_map ExistingWrites,
                    isl::union_set ProposedOccupied,
-                   isl::union_set ProposedUnused, isl::union_set ProposedWrites,
+                   isl::union_set ProposedUnused, isl::union_map ProposedKnown,
+                   isl::union_map ProposedWrites,
                    llvm::raw_ostream *OS = nullptr, unsigned Indent = 0);
 } // namespace polly
 
index 09fac85..b3831e6 100644 (file)
@@ -536,6 +536,14 @@ public:
     checkConsistency();
   }
 
+  /// Create a new object with the given members.
+  Knowledge(isl::union_set Occupied, isl::union_set Unused,
+            isl::union_map Known, isl::union_map Written)
+      : Occupied(std::move(Occupied)), Unused(std::move(Unused)),
+        Known(std::move(Known)), Written(std::move(Written)) {
+    checkConsistency();
+  }
+
   /// Return whether this object was not default-constructed.
   bool isUsable() const { return (Occupied || Unused) && Known && Written; }
 
@@ -1806,17 +1814,16 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
 INITIALIZE_PASS_END(DeLICM, "polly-delicm", "Polly - DeLICM/DePRE", false,
                     false)
 
-bool polly::isConflicting(isl::union_set ExistingOccupied,
-                          isl::union_set ExistingUnused,
-                          isl::union_set ExistingWrites,
-                          isl::union_set ProposedOccupied,
-                          isl::union_set ProposedUnused,
-                          isl::union_set ProposedWrites, llvm::raw_ostream *OS,
-                          unsigned Indent) {
+bool polly::isConflicting(
+    isl::union_set ExistingOccupied, isl::union_set ExistingUnused,
+    isl::union_map ExistingKnown, isl::union_map ExistingWrites,
+    isl::union_set ProposedOccupied, isl::union_set ProposedUnused,
+    isl::union_map ProposedKnown, isl::union_map ProposedWrites,
+    llvm::raw_ostream *OS, unsigned Indent) {
   Knowledge Existing(std::move(ExistingOccupied), std::move(ExistingUnused),
-                     std::move(ExistingWrites));
+                     std::move(ExistingKnown), std::move(ExistingWrites));
   Knowledge Proposed(std::move(ProposedOccupied), std::move(ProposedUnused),
-                     std::move(ProposedWrites));
+                     std::move(ProposedKnown), std::move(ProposedWrites));
 
   return Knowledge::isConflicting(Existing, Proposed, OS, Indent);
 }
index a8712cc..8803b07 100644 (file)
@@ -109,21 +109,30 @@ bool checkIsConflictingNonsymmetric(KnowledgeStr Existing,
   completeLifetime(Universe, ExistingOccupied, ExistingUnused);
   completeLifetime(Universe, ProposedOccupied, ProposedUnused);
 
-  auto Result =
-      isConflicting(ExistingOccupied, ExistingUnused, ExistingWritten,
-                    ProposedOccupied, ProposedUnused, ProposedWritten);
+  auto ParamSpace = isl::manage(isl_union_set_get_space(Universe.keep()));
+  auto EmptyUnionMap = isl::union_map::empty(ParamSpace);
+  auto ExistingWrittenMap =
+      isl::manage(isl_union_map_from_domain(ExistingWritten.copy()));
+  auto ProposedWrittenMap =
+      isl::manage(isl_union_map_from_domain(ProposedWritten.copy()));
+  auto Result = isConflicting(
+      ExistingOccupied, ExistingUnused, EmptyUnionMap, ExistingWrittenMap,
+      ProposedOccupied, ProposedUnused, EmptyUnionMap, ProposedWrittenMap);
 
   // isConflicting does not require ExistingOccupied nor ProposedUnused and are
   // implicitly assumed to be the remainder elements. Test the implicitness as
   // well.
   EXPECT_EQ(Result,
-            isConflicting(ExistingOccupied, ExistingUnused, ExistingWritten,
-                          ProposedOccupied, {}, ProposedWritten));
+            isConflicting(ExistingOccupied, ExistingUnused, EmptyUnionMap,
+                          ExistingWrittenMap, ProposedOccupied, {},
+                          EmptyUnionMap, ProposedWrittenMap));
   EXPECT_EQ(Result,
-            isConflicting({}, ExistingUnused, ExistingWritten, ProposedOccupied,
-                          ProposedUnused, ProposedWritten));
-  EXPECT_EQ(Result, isConflicting({}, ExistingUnused, ExistingWritten,
-                                  ProposedOccupied, {}, ProposedWritten));
+            isConflicting({}, ExistingUnused, EmptyUnionMap, ExistingWrittenMap,
+                          ProposedOccupied, ProposedUnused, EmptyUnionMap,
+                          ProposedWrittenMap));
+  EXPECT_EQ(Result, isConflicting({}, ExistingUnused, EmptyUnionMap,
+                                  ExistingWrittenMap, ProposedOccupied, {},
+                                  EmptyUnionMap, ProposedWrittenMap));
 
   return Result;
 }