diff options
author | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-09 22:46:10 +0000 |
---|---|---|
committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2007-12-09 22:46:10 +0000 |
commit | ed455c8fa25dd37a13b33f0afa66be03ac49b5bb (patch) | |
tree | 7bfa961474e22f830710a49d4ed015fe374967b7 /include/llvm/IntrinsicInst.h | |
parent | 46a6e79e602b23ea3478027d5bdd1f904aea7924 (diff) | |
download | llvm-ed455c8fa25dd37a13b33f0afa66be03ac49b5bb.tar.gz llvm-ed455c8fa25dd37a13b33f0afa66be03ac49b5bb.tar.bz2 llvm-ed455c8fa25dd37a13b33f0afa66be03ac49b5bb.tar.xz |
Devirtualizing Value destructor (PR889). Patch by Pawel Kunio!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44747 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IntrinsicInst.h')
-rw-r--r-- | include/llvm/IntrinsicInst.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/llvm/IntrinsicInst.h b/include/llvm/IntrinsicInst.h index 4e4d47513d..97c07d810d 100644 --- a/include/llvm/IntrinsicInst.h +++ b/include/llvm/IntrinsicInst.h @@ -38,6 +38,11 @@ namespace llvm { IntrinsicInst(); // DO NOT IMPLEMENT IntrinsicInst(const IntrinsicInst&); // DO NOT IMPLEMENT void operator=(const IntrinsicInst&); // DO NOT IMPLEMENT + protected: + static void destroyThis(IntrinsicInst* v) { + CallInst::destroyThis(v); + } + friend class Value; public: /// StripPointerCasts - This static method strips off any unneeded pointer @@ -85,6 +90,11 @@ namespace llvm { } static Value *StripCast(Value *C); + protected: + static void destroyThis(DbgInfoIntrinsic* v) { + IntrinsicInst::destroyThis(v); + } + friend class Value; }; /// DbgStopPointInst - This represents the llvm.dbg.stoppoint instruction. @@ -114,6 +124,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(DbgStopPointInst* v) { + DbgInfoIntrinsic::destroyThis(v); + } + friend class Value; }; /// DbgFuncStartInst - This represents the llvm.dbg.func.start instruction. @@ -129,6 +144,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(DbgFuncStartInst* v) { + DbgInfoIntrinsic::destroyThis(v); + } + friend class Value; }; /// DbgRegionStartInst - This represents the llvm.dbg.region.start @@ -144,6 +164,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(DbgRegionStartInst* v) { + DbgInfoIntrinsic::destroyThis(v); + } + friend class Value; }; /// DbgRegionEndInst - This represents the llvm.dbg.region.end instruction. @@ -175,6 +200,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(DbgDeclareInst* v) { + DbgInfoIntrinsic::destroyThis(v); + } + friend class Value; }; /// MemIntrinsic - This is the common base class for memset/memcpy/memmove. @@ -228,6 +258,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(MemIntrinsic* v) { + IntrinsicInst::destroyThis(v); + } + friend class Value; }; @@ -259,6 +294,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(MemCpyInst* v) { + MemIntrinsic::destroyThis(v); + } + friend class Value; }; /// MemMoveInst - This class wraps the llvm.memmove intrinsic. @@ -288,6 +328,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(MemMoveInst* v) { + MemIntrinsic::destroyThis(v); + } + friend class Value; }; /// MemSetInst - This class wraps the llvm.memset intrinsic. @@ -312,6 +357,11 @@ namespace llvm { static inline bool classof(const Value *V) { return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); } + protected: + static void destroyThis(MemSetInst* v) { + MemIntrinsic::destroyThis(v); + } + friend class Value; }; } |