[polly] r246397 - [FIX] Keep a copy of the Domain set in the SCEVAffinator

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 30 12:52:06 PDT 2015


Author: jdoerfert
Date: Sun Aug 30 14:52:06 2015
New Revision: 246397

URL: http://llvm.org/viewvc/llvm-project?rev=246397&view=rev
Log:
[FIX] Keep a copy of the Domain set in the SCEVAffinator

Modified:
    polly/trunk/lib/Support/SCEVAffinator.cpp

Modified: polly/trunk/lib/Support/SCEVAffinator.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Support/SCEVAffinator.cpp?rev=246397&r1=246396&r2=246397&view=diff
==============================================================================
--- polly/trunk/lib/Support/SCEVAffinator.cpp (original)
+++ polly/trunk/lib/Support/SCEVAffinator.cpp Sun Aug 30 14:52:06 2015
@@ -30,8 +30,10 @@ SCEVAffinator::SCEVAffinator(Scop *S)
     : S(S), Ctx(S->getIslCtx()), R(S->getRegion()), SE(*S->getSE()) {}
 
 SCEVAffinator::~SCEVAffinator() {
-  for (const auto &CachedPair : CachedExpressions)
+  for (const auto &CachedPair : CachedExpressions) {
     isl_pw_aff_free(CachedPair.second);
+    isl_set_free(CachedPair.first.second);
+  }
 }
 
 __isl_give isl_pw_aff *SCEVAffinator::getPwAff(const SCEV *Expr,
@@ -50,11 +52,12 @@ __isl_give isl_pw_aff *SCEVAffinator::ge
 
 __isl_give isl_pw_aff *SCEVAffinator::visit(const SCEV *Expr) {
 
-  auto Key = std::make_pair(Expr, Domain);
+  auto Key = std::make_pair(Expr, isl_set_copy(Domain));
   isl_pw_aff *PWA = CachedExpressions[Key];
-
-  if (PWA)
+  if (PWA) {
+    isl_set_free(Domain);
     return isl_pw_aff_copy(PWA);
+  }
 
   // In case the scev is a valid parameter, we do not further analyze this
   // expression, but create a new parameter in the isl_pw_aff. This allows us




More information about the llvm-commits mailing list