mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-07 12:35:41 +00:00
Implement hasComputableLoopEvolution for Add, Mul, and Trunc operators,
since they can support trivial implementations. This avoids potentially expensive traversals of the operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111031 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6daf2a254b
commit
ef0bedaba7
@ -126,6 +126,12 @@ namespace llvm {
|
||||
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 @@ namespace llvm {
|
||||
}
|
||||
|
||||
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 @@ namespace llvm {
|
||||
}
|
||||
|
||||
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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user