mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Avoid creating a metadata slot for all metadata that contains an instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90581 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
11572babb1
commit
ff7707e983
@ -695,13 +695,8 @@ void SlotTracker::processFunction() {
|
||||
!I->hasName())
|
||||
CreateFunctionSlot(I);
|
||||
for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i)
|
||||
if (MDNode *N = dyn_cast_or_null<MDNode>(I->getOperand(i))) {
|
||||
// Create a metadata slot only if N contains no instructions.
|
||||
for (unsigned n = 0, e = N->getNumElements(); n != e; ++n)
|
||||
if (N->getElement(n) && isa<Instruction>(N->getElement(n)))
|
||||
continue;
|
||||
if (MDNode *N = dyn_cast_or_null<MDNode>(I->getOperand(i)))
|
||||
CreateMetadataSlot(N);
|
||||
}
|
||||
|
||||
// Process metadata attached with this instruction.
|
||||
MDs.clear();
|
||||
@ -818,6 +813,11 @@ void SlotTracker::CreateFunctionSlot(const Value *V) {
|
||||
void SlotTracker::CreateMetadataSlot(const MDNode *N) {
|
||||
assert(N && "Can't insert a null Value into SlotTracker!");
|
||||
|
||||
// Don't insert if N contains an instruction.
|
||||
for (unsigned i = 0, e = N->getNumElements(); i != e; ++i)
|
||||
if (N->getElement(i) && isa<Instruction>(N->getElement(i)))
|
||||
return;
|
||||
|
||||
ValueMap::iterator I = mdnMap.find(N);
|
||||
if (I != mdnMap.end())
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user