remove the old and dangerous uncheckedReplaceAllUsesWith method,

which was just replaceAllUsesWith without some assertions.  It was
needed back when type refinement was alive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135253 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2011-07-15 06:18:52 +00:00
parent 032c6eb1c4
commit 678f9e05c9
3 changed files with 14 additions and 32 deletions

View File

@ -147,10 +147,6 @@ public:
/// ///
void replaceAllUsesWith(Value *V); void replaceAllUsesWith(Value *V);
// uncheckedReplaceAllUsesWith - Just like replaceAllUsesWith but dangerous.
// Only use when in type resolution situations!
void uncheckedReplaceAllUsesWith(Value *V);
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// Methods for handling the chain of uses of this Value. // Methods for handling the chain of uses of this Value.
// //

View File

@ -1059,10 +1059,6 @@ std::string ConstantArray::getAsCString() const {
//---- ConstantStruct::get() implementation... //---- ConstantStruct::get() implementation...
// //
namespace llvm {
}
// destroyConstant - Remove the constant from the constant table... // destroyConstant - Remove the constant from the constant table...
// //
void ConstantStruct::destroyConstant() { void ConstantStruct::destroyConstant() {
@ -1202,7 +1198,7 @@ void BlockAddress::replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U) {
assert(NewBA != this && "I didn't contain From!"); assert(NewBA != this && "I didn't contain From!");
// Everyone using this now uses the replacement. // Everyone using this now uses the replacement.
uncheckedReplaceAllUsesWith(NewBA); replaceAllUsesWith(NewBA);
destroyConstant(); destroyConstant();
} }
@ -1984,7 +1980,7 @@ void ConstantArray::replaceUsesOfWithOnConstant(Value *From, Value *To,
assert(Replacement != this && "I didn't contain From!"); assert(Replacement != this && "I didn't contain From!");
// Everyone using this now uses the replacement. // Everyone using this now uses the replacement.
uncheckedReplaceAllUsesWith(Replacement); replaceAllUsesWith(Replacement);
// Delete the old constant! // Delete the old constant!
destroyConstant(); destroyConstant();
@ -2050,7 +2046,7 @@ void ConstantStruct::replaceUsesOfWithOnConstant(Value *From, Value *To,
assert(Replacement != this && "I didn't contain From!"); assert(Replacement != this && "I didn't contain From!");
// Everyone using this now uses the replacement. // Everyone using this now uses the replacement.
uncheckedReplaceAllUsesWith(Replacement); replaceAllUsesWith(Replacement);
// Delete the old constant! // Delete the old constant!
destroyConstant(); destroyConstant();
@ -2072,7 +2068,7 @@ void ConstantVector::replaceUsesOfWithOnConstant(Value *From, Value *To,
assert(Replacement != this && "I didn't contain From!"); assert(Replacement != this && "I didn't contain From!");
// Everyone using this now uses the replacement. // Everyone using this now uses the replacement.
uncheckedReplaceAllUsesWith(Replacement); replaceAllUsesWith(Replacement);
// Delete the old constant! // Delete the old constant!
destroyConstant(); destroyConstant();
@ -2170,7 +2166,7 @@ void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV,
assert(Replacement != this && "I didn't contain From!"); assert(Replacement != this && "I didn't contain From!");
// Everyone using this now uses the replacement. // Everyone using this now uses the replacement.
uncheckedReplaceAllUsesWith(Replacement); replaceAllUsesWith(Replacement);
// Delete the old constant! // Delete the old constant!
destroyConstant(); destroyConstant();

View File

@ -280,17 +280,16 @@ void Value::takeName(Value *V) {
} }
// uncheckedReplaceAllUsesWith - This is exactly the same as replaceAllUsesWith, void Value::replaceAllUsesWith(Value *New) {
// except that it doesn't have all of the asserts. The asserts fail because we assert(New && "Value::replaceAllUsesWith(<null>) is invalid!");
// are half-way done resolving types, which causes some types to exist as two assert(New != this && "this->replaceAllUsesWith(this) is NOT valid!");
// different Type*'s at the same time. This is a sledgehammer to work around assert(New->getType() == getType() &&
// this problem. "replaceAllUses of value with new value of different type!");
//
void Value::uncheckedReplaceAllUsesWith(Value *New) {
// Notify all ValueHandles (if present) that this value is going away. // Notify all ValueHandles (if present) that this value is going away.
if (HasValueHandle) if (HasValueHandle)
ValueHandleBase::ValueIsRAUWd(this, New); ValueHandleBase::ValueIsRAUWd(this, New);
while (!use_empty()) { while (!use_empty()) {
Use &U = *UseList; Use &U = *UseList;
// Must handle Constants specially, we cannot call replaceUsesOfWith on a // Must handle Constants specially, we cannot call replaceUsesOfWith on a
@ -301,23 +300,14 @@ void Value::uncheckedReplaceAllUsesWith(Value *New) {
continue; continue;
} }
} }
U.set(New); U.set(New);
} }
if (BasicBlock *BB = dyn_cast<BasicBlock>(this)) if (BasicBlock *BB = dyn_cast<BasicBlock>(this))
BB->replaceSuccessorsPhiUsesWith(cast<BasicBlock>(New)); BB->replaceSuccessorsPhiUsesWith(cast<BasicBlock>(New));
} }
void Value::replaceAllUsesWith(Value *New) {
assert(New && "Value::replaceAllUsesWith(<null>) is invalid!");
assert(New != this && "this->replaceAllUsesWith(this) is NOT valid!");
assert(New->getType() == getType() &&
"replaceAllUses of value with new value of different type!");
uncheckedReplaceAllUsesWith(New);
}
Value *Value::stripPointerCasts() { Value *Value::stripPointerCasts() {
if (!getType()->isPointerTy()) if (!getType()->isPointerTy())
return this; return this;