[llvm-commits] [llvm] r111031 - /llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h
Dan Gohman
gohman at apple.com
Fri Aug 13 13:03:15 PDT 2010
Author: djg
Date: Fri Aug 13 15:03:15 2010
New Revision: 111031
URL: http://llvm.org/viewvc/llvm-project?rev=111031&view=rev
Log:
Implement hasComputableLoopEvolution for Add, Mul, and Trunc operators,
since they can support trivial implementations. This avoids potentially
expensive traversals of the operands.
Modified:
llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h
Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h?rev=111031&r1=111030&r2=111031&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h (original)
+++ llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h Fri Aug 13 15:03:15 2010
@@ -126,6 +126,12 @@
public:
virtual void print(raw_ostream &OS) const;
+ virtual bool hasComputableLoopEvolution(const Loop *QL) const {
+ // Not computable. A truncate of an addrec is always folded into
+ // the addrec.
+ return false;
+ }
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const SCEVTruncateExpr *S) { return true; }
static inline bool classof(const SCEV *S) {
@@ -294,6 +300,12 @@
}
public:
+ virtual bool hasComputableLoopEvolution(const Loop *QL) const {
+ // Not computable. An add of an addrec is always folded into the addrec
+ // if the other operands are loop-variant or loop-computable.
+ return false;
+ }
+
virtual const char *getOperationStr() const { return " + "; }
virtual const Type *getType() const {
@@ -322,6 +334,12 @@
}
public:
+ virtual bool hasComputableLoopEvolution(const Loop *QL) const {
+ // Not computable. A mul of an addrec is always folded into the addrec
+ // if the other operands are loop-variant or loop-computable.
+ return false;
+ }
+
virtual const char *getOperationStr() const { return " * "; }
/// Methods for support type inquiry through isa, cast, and dyn_cast:
More information about the llvm-commits
mailing list