diff options
| author | Reid Spencer <rspencer@reidspencer.com> | 2004-07-17 23:48:33 +0000 |
|---|---|---|
| committer | Reid Spencer <rspencer@reidspencer.com> | 2004-07-17 23:48:33 +0000 |
| commit | 1ebe1abe22a774083f5f702257421946e2856a2a (patch) | |
| tree | 0088116c64605d53a7abffddbabd6cd37f7058bc /llvm/lib | |
| parent | accd7c708dc7d098740fc106e3e8462119a8ba8c (diff) | |
| download | bcm5719-llvm-1ebe1abe22a774083f5f702257421946e2856a2a.tar.gz bcm5719-llvm-1ebe1abe22a774083f5f702257421946e2856a2a.zip | |
bug 122:
- Replace ConstantPointerRef usage with GlobalValue usage
- Minimize redundant isa<GlobalValue> usage
- Correct isa<Constant> for GlobalValue subclass
- Delete ConstantPointerRef member function implementations
llvm-svn: 14928
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/Constants.cpp | 62 |
1 files changed, 5 insertions, 57 deletions
diff --git a/llvm/lib/VMCore/Constants.cpp b/llvm/lib/VMCore/Constants.cpp index 6a547e05ae3..ff944877a78 100644 --- a/llvm/lib/VMCore/Constants.cpp +++ b/llvm/lib/VMCore/Constants.cpp @@ -14,6 +14,7 @@ #include "llvm/Constants.h" #include "ConstantFolding.h" #include "llvm/DerivedTypes.h" +#include "llvm/GlobalValue.h" #include "llvm/iMemory.h" #include "llvm/SymbolTable.h" #include "llvm/Module.h" @@ -54,8 +55,8 @@ void Constant::destroyConstantImpl() { << *V << "\n\n"; #endif assert(isa<Constant>(V) && "References remain to Constant being destroyed"); - Constant *CPV = cast<Constant>(V); - CPV->destroyConstant(); + Constant *CV = cast<Constant>(V); + CV->destroyConstant(); // The constant should remove itself from our use list... assert((use_empty() || use_back() != V) && "Constant not removed!"); @@ -267,12 +268,6 @@ ConstantStruct::ConstantStruct(const StructType *T, } } -ConstantPointerRef::ConstantPointerRef(GlobalValue *GV) - : Constant(GV->getType()) { - Operands.reserve(1); - Operands.push_back(Use(GV, this)); -} - ConstantExpr::ConstantExpr(unsigned Opcode, Constant *C, const Type *Ty) : Constant(Ty), iType(Opcode) { Operands.reserve(1); @@ -420,16 +415,10 @@ bool ConstantStruct::classof(const Constant *CPV) { } bool ConstantPointerNull::classof(const Constant *CPV) { - return isa<PointerType>(CPV->getType()) && !isa<ConstantExpr>(CPV) && + return !isa<GlobalValue>(CPV) && isa<PointerType>(CPV->getType()) && !isa<ConstantExpr>(CPV) && CPV->getNumOperands() == 0; } -bool ConstantPointerRef::classof(const Constant *CPV) { - return isa<PointerType>(CPV->getType()) && !isa<ConstantExpr>(CPV) && - CPV->getNumOperands() == 1; -} - - //===----------------------------------------------------------------------===// // isValueValidForType implementations @@ -532,31 +521,6 @@ void ConstantStruct::replaceUsesOfWithOnConstant(Value *From, Value *To, destroyConstant(); } -void ConstantPointerRef::replaceUsesOfWithOnConstant(Value *From, Value *To, - bool DisableChecking) { - if (isa<GlobalValue>(To)) { - assert(From == getOperand(0) && "Doesn't contain from!"); - ConstantPointerRef *Replacement = - ConstantPointerRef::get(cast<GlobalValue>(To)); - - // Everyone using this now uses the replacement... - if (DisableChecking) - uncheckedReplaceAllUsesWith(Replacement); - else - replaceAllUsesWith(Replacement); - - } else { - // Just replace ourselves with the To value specified. - if (DisableChecking) - uncheckedReplaceAllUsesWith(To); - else - replaceAllUsesWith(To); - } - - // Delete the old constant! - destroyConstant(); -} - void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV, bool DisableChecking) { assert(isa<Constant>(ToV) && "Cannot make Constant refer to non-constant!"); @@ -1050,23 +1014,6 @@ void ConstantPointerNull::destroyConstant() { } -//---- ConstantPointerRef::get() implementation... -// -ConstantPointerRef *ConstantPointerRef::get(GlobalValue *GV) { - assert(GV->getParent() && "Global Value must be attached to a module!"); - - // The Module handles the pointer reference sharing... - return GV->getParent()->getConstantPointerRef(GV); -} - -// destroyConstant - Remove the constant from the constant table... -// -void ConstantPointerRef::destroyConstant() { - getValue()->getParent()->destroyConstantPointerRef(this); - destroyConstantImpl(); -} - - //---- ConstantExpr::get() implementations... // typedef std::pair<unsigned, std::vector<Constant*> > ExprMapKeyType; @@ -1259,3 +1206,4 @@ void ConstantExpr::destroyConstant() { const char *ConstantExpr::getOpcodeName() const { return Instruction::getOpcodeName(getOpcode()); } + |

