When doing v1->RAUW(v2), don't do anything to metadata. We don't know

why one was replaced with the other.  Even in the specific case of 
debug information, it doesn't make sense to transfer the location over,
this will just result in jumbled loc info.

llvm-svn: 92241
This commit is contained in:
Chris Lattner 2009-12-29 02:53:52 +00:00
parent d8eb2cf571
commit 241264ee32
3 changed files with 0 additions and 27 deletions

View File

@ -234,9 +234,7 @@ public:
/// ValueIsDeleted - This handler is used to update metadata store
/// when a value is deleted.
void ValueIsDeleted(const Value *) {}
void ValueIsDeleted(Instruction *Inst);
void ValueIsRAUWd(Value *V1, Value *V2);
/// ValueIsCloned - This handler is used to update metadata store
/// when In1 is cloned to create In2.

View File

@ -289,7 +289,6 @@ public:
void ValueIsDeleted(Instruction *Inst) {
removeAllMetadata(Inst);
}
void ValueIsRAUWd(Value *V1, Value *V2);
/// ValueIsCloned - This handler is used to update metadata store
/// when In1 is cloned to create In2.
@ -428,18 +427,6 @@ void MetadataContextImpl::ValueIsCloned(const Instruction *In1,
In2->setMetadata(I->first, I->second);
}
/// ValueIsRAUWd - This handler is used when V1's all uses are replaced by
/// V2.
void MetadataContextImpl::ValueIsRAUWd(Value *V1, Value *V2) {
Instruction *I1 = dyn_cast<Instruction>(V1);
Instruction *I2 = dyn_cast<Instruction>(V2);
if (!I1 || !I2)
return;
// FIXME: Give custom handlers a chance to override this.
ValueIsCloned(I1, I2);
}
//===----------------------------------------------------------------------===//
// MetadataContext implementation.
//
@ -484,9 +471,6 @@ void MetadataContext::getMDKindNames(SmallVectorImpl<StringRef> &N) const {
void MetadataContext::ValueIsDeleted(Instruction *Inst) {
pImpl->ValueIsDeleted(Inst);
}
void MetadataContext::ValueIsRAUWd(Value *V1, Value *V2) {
pImpl->ValueIsRAUWd(V1, V2);
}
/// ValueIsCloned - This handler is used to update metadata store
/// when In1 is cloned to create In2.

View File

@ -19,7 +19,6 @@
#include "llvm/Instructions.h"
#include "llvm/Operator.h"
#include "llvm/Module.h"
#include "llvm/Metadata.h"
#include "llvm/ValueSymbolTable.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/Debug.h"
@ -302,14 +301,6 @@ void Value::uncheckedReplaceAllUsesWith(Value *New) {
if (HasValueHandle)
ValueHandleBase::ValueIsRAUWd(this, New);
// FIXME: It doesn't make sense at all for metadata to follow RAUW.
if (Instruction *I = dyn_cast<Instruction>(this))
if (I->hasMetadata()) {
LLVMContext &Context = getContext();
// FIXME: NUKE ValueIsRAUWd??
Context.pImpl->TheMetadata.ValueIsRAUWd(this, New);
}
while (!use_empty()) {
Use &U = *UseList;
// Must handle Constants specially, we cannot call replaceUsesOfWith on a