diff options
-rw-r--r-- | polly/lib/Transform/MaximalStaticExpansion.cpp | 44 |
1 files changed, 1 insertions, 43 deletions
diff --git a/polly/lib/Transform/MaximalStaticExpansion.cpp b/polly/lib/Transform/MaximalStaticExpansion.cpp index f8856f571a6..b15a2820a8c 100644 --- a/polly/lib/Transform/MaximalStaticExpansion.cpp +++ b/polly/lib/Transform/MaximalStaticExpansion.cpp @@ -17,6 +17,7 @@ #include "polly/ScopInfo.h" #include "polly/ScopPass.h" #include "polly/Support/GICHelper.h" +#include "polly/Support/ISLTools.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/StringRef.h" #include "llvm/Analysis/OptimizationRemarkEmitter.h" @@ -128,49 +129,6 @@ static bool isDimBoundedByConstant(isl::set Set, unsigned dim) { } #endif -/// If @p PwAff maps to a constant, return said constant. If @p Max/@p Min, it -/// can also be a piecewise constant and it would return the minimum/maximum -/// value. Otherwise, return NaN. -static isl::val getConstant(isl::pw_aff PwAff, bool Max, bool Min) { - assert(!Max || !Min); - isl::val Result; - PwAff.foreach_piece([=, &Result](isl::set Set, isl::aff Aff) -> isl::stat { - if (Result && Result.is_nan()) - return isl::stat::ok; - - // TODO: If Min/Max, we can also determine a minimum/maximum value if - // Set is constant-bounded. - if (!Aff.is_cst()) { - Result = isl::val::nan(Aff.get_ctx()); - return isl::stat::error; - } - - auto ThisVal = Aff.get_constant_val(); - if (!Result) { - Result = ThisVal; - return isl::stat::ok; - } - - if (Result.eq(ThisVal)) - return isl::stat::ok; - - if (Max && ThisVal.gt(Result)) { - Result = ThisVal; - return isl::stat::ok; - } - - if (Min && ThisVal.lt(Result)) { - Result = ThisVal; - return isl::stat::ok; - } - - // Not compatible - Result = isl::val::nan(Aff.get_ctx()); - return isl::stat::error; - }); - return Result; -} - char MaximalStaticExpander::ID = 0; isl::union_map MaximalStaticExpander::filterDependences( |