[DeLICM/ZoneAlgo] Remove duplicate code. NFC.
authorMichael Kruse <llvm@meinersbur.de>
Tue, 8 Aug 2017 17:00:27 +0000 (17:00 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Tue, 8 Aug 2017 17:00:27 +0000 (17:00 +0000)
DeLICM and ZoneAlgo both implemented filterKnownValInst.

Declare ZoneAlgo's version in the header and let DeLCIM use it.

llvm-svn: 310381

polly/include/polly/ZoneAlgo.h
polly/lib/Transform/DeLICM.cpp
polly/lib/Transform/ZoneAlgo.cpp

index a88b918..2128dc7 100644 (file)
@@ -29,6 +29,13 @@ class Scop;
 class ScopStmt;
 class MemoryAccess;
 
+/// Return only the mappings that map to known values.
+///
+/// @param UMap { [] -> ValInst[] }
+///
+/// @return { [] -> ValInst[] }
+isl::union_map filterKnownValInst(const isl::union_map &UMap);
+
 /// Base class for algorithms based on zones, like DeLICM.
 class ZoneAlgorithm {
 protected:
index 8a47d21..bad986a 100644 (file)
@@ -121,31 +121,6 @@ isl::map computeScalarReachingOverwrite(isl::union_map Schedule,
   return singleton(std::move(ReachOverwrite), ResultSpace);
 }
 
-/// Return whether @p Map maps to an unknown value.
-///
-/// @param { [] -> ValInst[] }
-bool isMapToUnknown(const isl::map &Map) {
-  auto Space = give(isl_space_range(isl_map_get_space(Map.keep())));
-  return !isl_map_has_tuple_id(Map.keep(), isl_dim_set) &&
-         !isl_space_is_wrapping(Space.keep()) &&
-         isl_map_dim(Map.keep(), isl_dim_out) == 0;
-}
-
-/// Return only the mappings that map to known values.
-///
-/// @param UMap { [] -> ValInst[] }
-///
-/// @return { [] -> ValInst[] }
-isl::union_map filterKnownValInst(const isl::union_map &UMap) {
-  auto Result = give(isl_union_map_empty(isl_union_map_get_space(UMap.keep())));
-  UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
-    if (!isMapToUnknown(Map))
-      Result = give(isl_union_map_add_map(Result.take(), Map.take()));
-    return isl::stat::ok;
-  });
-  return Result;
-}
-
 /// Try to find a 'natural' extension of a mapped to elements outside its
 /// domain.
 ///
index d8618a5..70105f5 100644 (file)
@@ -246,12 +246,7 @@ static bool isMapToUnknown(const isl::map &Map) {
          Space.is_wrapping().is_false() && Space.dim(isl::dim::set) == 0;
 }
 
-/// Return only the mappings that map to known values.
-///
-/// @param UMap { [] -> ValInst[] }
-///
-/// @return { [] -> ValInst[] }
-static isl::union_map filterKnownValInst(const isl::union_map &UMap) {
+isl::union_map polly::filterKnownValInst(const isl::union_map &UMap) {
   isl::union_map Result = isl::union_map::empty(UMap.get_space());
   UMap.foreach_map([=, &Result](isl::map Map) -> isl::stat {
     if (!isMapToUnknown(Map))