Verify SCEVAddRecExpr's invariant in ScalarEvolution::getAddRecExpr
authorDan Gohman <gohman@apple.com>
Wed, 17 Nov 2010 20:48:38 +0000 (20:48 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 17 Nov 2010 20:48:38 +0000 (20:48 +0000)
instead of in SCEVAddRecExpr's constructor, in preparation for an
upcoming change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119554 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/ScalarEvolutionExpressions.h
lib/Analysis/ScalarEvolution.cpp

index 4213a287011b56043549dbc6a7d2290351a27f5f..06a8b42caff1be46c5c63a0909cd773ba3ac65f8 100644 (file)
@@ -373,11 +373,7 @@ namespace llvm {
 
     SCEVAddRecExpr(const FoldingSetNodeIDRef ID,
                    const SCEV *const *O, size_t N, const Loop *l)
-      : SCEVNAryExpr(ID, scAddRecExpr, O, N), L(l) {
-      for (size_t i = 0, e = NumOperands; i != e; ++i)
-        assert(Operands[i]->isLoopInvariant(l) &&
-               "Operands of AddRec must be loop-invariant!");
-    }
+      : SCEVNAryExpr(ID, scAddRecExpr, O, N), L(l) {}
 
   public:
     const SCEV *getStart() const { return Operands[0]; }
index 8ff1f0fa6fd511059a4bc9c9ea82e31baf225b85..deea0004d503d5ebee0c9e1cb3311519825c7296 100644 (file)
@@ -2073,6 +2073,9 @@ ScalarEvolution::getAddRecExpr(SmallVectorImpl<const SCEV *> &Operands,
   for (unsigned i = 1, e = Operands.size(); i != e; ++i)
     assert(getEffectiveSCEVType(Operands[i]->getType()) == ETy &&
            "SCEVAddRecExpr operand types don't match!");
+  for (unsigned i = 0, e = Operands.size(); i != e; ++i)
+    assert(Operands[i]->isLoopInvariant(L) &&
+           "SCEVAddRecExpr operand is not loop-invariant!");
 #endif
 
   if (Operands.back()->isZero()) {