aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Analysis/ScalarEvolutionExpressions.h
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2009-02-17 00:13:06 +0000
committerEvan Cheng <evan.cheng@apple.com>2009-02-17 00:13:06 +0000
commit5a6c1a840ad343c0ed2fa54a0edb50b61f828f0f (patch)
tree1268fd6b81fa26857be92b2f24662d01504f8806 /include/llvm/Analysis/ScalarEvolutionExpressions.h
parent1a5e936c53acda949afd8fa21b5a837b1d9fede9 (diff)
downloadexternal_llvm-5a6c1a840ad343c0ed2fa54a0edb50b61f828f0f.zip
external_llvm-5a6c1a840ad343c0ed2fa54a0edb50b61f828f0f.tar.gz
external_llvm-5a6c1a840ad343c0ed2fa54a0edb50b61f828f0f.tar.bz2
Strengthen the "non-constant stride must dominate loop preheader" check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64703 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/ScalarEvolutionExpressions.h')
-rw-r--r--include/llvm/Analysis/ScalarEvolutionExpressions.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/llvm/Analysis/ScalarEvolutionExpressions.h b/include/llvm/Analysis/ScalarEvolutionExpressions.h
index 652a99d..61bb25a 100644
--- a/include/llvm/Analysis/ScalarEvolutionExpressions.h
+++ b/include/llvm/Analysis/ScalarEvolutionExpressions.h
@@ -20,6 +20,7 @@ namespace llvm {
class ConstantInt;
class ConstantRange;
class APInt;
+ class DominatorTree;
enum SCEVTypes {
// These should be ordered in terms of increasing complexity to make the
@@ -58,6 +59,10 @@ namespace llvm {
return this;
}
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const {
+ return true;
+ }
+
virtual void print(std::ostream &OS) const;
void print(std::ostream *OS) const { if (OS) print(*OS); }
@@ -100,6 +105,8 @@ namespace llvm {
return SE.getTruncateExpr(H, Ty);
}
+ virtual bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual void print(std::ostream &OS) const;
void print(std::ostream *OS) const { if (OS) print(*OS); }
@@ -142,6 +149,8 @@ namespace llvm {
return SE.getZeroExtendExpr(H, Ty);
}
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual void print(std::ostream &OS) const;
void print(std::ostream *OS) const { if (OS) print(*OS); }
@@ -184,6 +193,8 @@ namespace llvm {
return SE.getSignExtendExpr(H, Ty);
}
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual void print(std::ostream &OS) const;
void print(std::ostream *OS) const { if (OS) print(*OS); }
@@ -250,6 +261,8 @@ namespace llvm {
const SCEVHandle &Conc,
ScalarEvolution &SE) const;
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual const char *getOperationStr() const = 0;
virtual const Type *getType() const { return getOperand(0)->getType(); }
@@ -343,6 +356,7 @@ namespace llvm {
return SE.getUDivExpr(L, R);
}
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
virtual const Type *getType() const;
@@ -437,6 +451,8 @@ namespace llvm {
const SCEVHandle &Conc,
ScalarEvolution &SE) const;
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual void print(std::ostream &OS) const;
void print(std::ostream *OS) const { if (OS) print(*OS); }
@@ -518,6 +534,8 @@ namespace llvm {
return this;
}
+ bool dominates(BasicBlock *BB, DominatorTree *DT) const;
+
virtual const Type *getType() const;
virtual void print(std::ostream &OS) const;