diff options
author | Chris Lattner <sabre@nondot.org> | 2002-08-18 00:39:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-08-18 00:39:59 +0000 |
commit | e0fbb497ee44f86ec108e4ff8787a848c6ee8655 (patch) | |
tree | 7ce7b1156c9a8032c2542a2aa536bedd799fd4b9 /include/llvm/Constant.h | |
parent | 915ce8a02ebefd02b3c34a43267aae5c608ee170 (diff) | |
download | external_llvm-e0fbb497ee44f86ec108e4ff8787a848c6ee8655.zip external_llvm-e0fbb497ee44f86ec108e4ff8787a848c6ee8655.tar.gz external_llvm-e0fbb497ee44f86ec108e4ff8787a848c6ee8655.tar.bz2 |
- ConstantPointerRefs are now automatically removed from the module table
when they are destroyed, which makes Constant::destroyConstant an actually
useful external interface. Expose these methods publicly.
- Implement destroyConstant on ConstPointerNull so that destroyConstant can
be used on any derived type constant safely.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3378 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Constant.h')
-rw-r--r-- | include/llvm/Constant.h | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/include/llvm/Constant.h b/include/llvm/Constant.h index 36a26d7..af46dbe 100644 --- a/include/llvm/Constant.h +++ b/include/llvm/Constant.h @@ -14,15 +14,6 @@ protected: inline Constant(const Type *Ty) : User(Ty, Value::ConstantVal) {} ~Constant() {} - // destroyConstant - Called if some element of this constant is no longer - // valid. At this point only other constants may be on the use_list for this - // constant. Any constants on our Use list must also be destroy'd. The - // implementation must be sure to remove the constant from the list of - // available cached constants. Implementations should call - // destroyConstantImpl as the last thing they do, to destroy all users and - // delete this. - // - virtual void destroyConstant() { assert(0 && "Not reached!"); } void destroyConstantImpl(); public: // Specialize setName to handle symbol table majik... @@ -39,6 +30,24 @@ public: // isConstantExpr - Return true if this is a ConstantExpr virtual bool isConstantExpr() const { return false; } + + + // destroyConstant - Called if some element of this constant is no longer + // valid. At this point only other constants may be on the use_list for this + // constant. Any constants on our Use list must also be destroy'd. The + // implementation must be sure to remove the constant from the list of + // available cached constants. Implementations should call + // destroyConstantImpl as the last thing they do, to destroy all users and + // delete this. + // + // Note that this call is only valid on non-primitive constants: You cannot + // destroy an integer constant for example. This API is used to delete + // constants that have ConstantPointerRef's embeded in them when the module is + // deleted, and it is used by GlobalDCE to remove ConstantPointerRefs that are + // unneeded, allowing globals to be DCE'd. + // + virtual void destroyConstant() { assert(0 && "Not reached!"); } + // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const Constant *) { return true; } |