diff options
author | Dan Gohman <gohman@apple.com> | 2010-11-17 22:27:42 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-11-17 22:27:42 +0000 |
commit | 4ce32db913beb6ae27df2fa0a9db5d68fd4889d2 (patch) | |
tree | 91450bb144255afdc09e8625ffba157068a91e08 /include/llvm/Analysis/ScalarEvolution.h | |
parent | 2f7aed39a3082a3e0bb35475e8ed0cb782fef4b5 (diff) | |
download | llvm-4ce32db913beb6ae27df2fa0a9db5d68fd4889d2.tar.gz llvm-4ce32db913beb6ae27df2fa0a9db5d68fd4889d2.tar.bz2 llvm-4ce32db913beb6ae27df2fa0a9db5d68fd4889d2.tar.xz |
Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand
to ScalarEvolution. Delete SCEV::~SCEV. SCEV is no longer virtual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119578 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/ScalarEvolution.h')
-rw-r--r-- | include/llvm/Analysis/ScalarEvolution.h | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/include/llvm/Analysis/ScalarEvolution.h b/include/llvm/Analysis/ScalarEvolution.h index 30b019cd44..750a090fe7 100644 --- a/include/llvm/Analysis/ScalarEvolution.h +++ b/include/llvm/Analysis/ScalarEvolution.h @@ -70,8 +70,7 @@ namespace llvm { private: SCEV(const SCEV &); // DO NOT IMPLEMENT void operator=(const SCEV &); // DO NOT IMPLEMENT - protected: - virtual ~SCEV(); + public: explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy) : FastID(ID), SCEVType(SCEVTy), SubclassData(0) {} @@ -80,7 +79,7 @@ namespace llvm { /// getType - Return the LLVM type of this SCEV expression. /// - virtual const Type *getType() const = 0; + const Type *getType() const; /// isZero - Return true if the expression is a constant zero. /// @@ -95,14 +94,10 @@ namespace llvm { /// bool isAllOnesValue() const; - /// hasOperand - Test whether this SCEV has Op as a direct or - /// indirect operand. - virtual bool hasOperand(const SCEV *Op) const = 0; - /// print - Print out the internal representation of this scalar to the /// specified stream. This should really only be used for debugging /// purposes. - virtual void print(raw_ostream &OS) const = 0; + void print(raw_ostream &OS) const; /// dump - This method is used for debugging. /// @@ -137,11 +132,6 @@ namespace llvm { struct SCEVCouldNotCompute : public SCEV { SCEVCouldNotCompute(); - // None of these methods are valid for this object. - virtual const Type *getType() const; - virtual void print(raw_ostream &OS) const; - virtual bool hasOperand(const SCEV *Op) const; - /// Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const SCEVCouldNotCompute *S) { return true; } static bool classof(const SCEV *S); @@ -691,6 +681,10 @@ namespace llvm { /// properly dominate the specified basic block. bool properlyDominates(const SCEV *S, BasicBlock *BB) const; + /// hasOperand - Test whether the given SCEV has Op as a direct or + /// indirect operand. + bool hasOperand(const SCEV *S, const SCEV *Op) const; + virtual bool runOnFunction(Function &F); virtual void releaseMemory(); virtual void getAnalysisUsage(AnalysisUsage &AU) const; |