Skip to content

Commit

Permalink
[ValueMapper] Add debug output for metadata remapping
Browse files Browse the repository at this point in the history
This is useful for debugging which pointers are updated during remapping
process.

Differential Revision: https://reviews.llvm.org/D95775
  • Loading branch information
ruiling committed Mar 11, 2021
1 parent 134a179 commit 8b7d3be
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions llvm/lib/Transforms/Utils/ValueMapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalObject.h"
#include "llvm/IR/GlobalIndirectSymbol.h"
#include "llvm/IR/GlobalObject.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/Instruction.h"
Expand All @@ -37,13 +37,16 @@
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Debug.h"
#include <cassert>
#include <limits>
#include <memory>
#include <utility>

using namespace llvm;

#define DEBUG_TYPE "value-mapper"

// Out of line method to get vtable etc for class.
void ValueMapTypeRemapper::anchor() {}
void ValueMaterializer::anchor() {}
Expand Down Expand Up @@ -570,10 +573,18 @@ Optional<Metadata *> MDNodeMapper::tryToMapOperand(const Metadata *Op) {
MDNode *MDNodeMapper::mapDistinctNode(const MDNode &N) {
assert(N.isDistinct() && "Expected a distinct node");
assert(!M.getVM().getMappedMD(&N) && "Expected an unmapped node");
DistinctWorklist.push_back(cast<MDNode>(
(M.Flags & RF_ReuseAndMutateDistinctMDs)
? M.mapToSelf(&N)
: M.mapToMetadata(&N, MDNode::replaceWithDistinct(N.clone()))));
Metadata *NewM = nullptr;

if (M.Flags & RF_ReuseAndMutateDistinctMDs) {
NewM = M.mapToSelf(&N);
} else {
NewM = MDNode::replaceWithDistinct(N.clone());
LLVM_DEBUG(dbgs() << "\nMap " << N << "\n"
<< "To " << *NewM << "\n\n");
M.mapToMetadata(&N, NewM);
}
DistinctWorklist.push_back(cast<MDNode>(NewM));

return DistinctWorklist.back();
}

Expand Down Expand Up @@ -621,6 +632,9 @@ void MDNodeMapper::remapOperands(MDNode &N, OperandMapper mapOperand) {
for (unsigned I = 0, E = N.getNumOperands(); I != E; ++I) {
Metadata *Old = N.getOperand(I);
Metadata *New = mapOperand(Old);
if (Old != New)
LLVM_DEBUG(dbgs() << "Replacing Op " << Old << " with " << New << " in "
<< N << "\n");

if (Old != New)
N.replaceOperandWith(I, New);
Expand Down Expand Up @@ -740,6 +754,11 @@ void MDNodeMapper::mapNodesInPOT(UniquedGraph &G) {
});

auto *NewN = MDNode::replaceWithUniqued(std::move(ClonedN));
if (N && NewN && N != NewN) {
LLVM_DEBUG(dbgs() << "\nMap " << *N << "\n"
<< "To " << *NewN << "\n\n");
}

M.mapToMetadata(N, NewN);

// Nodes that were referenced out of order in the POT are involved in a
Expand Down

0 comments on commit 8b7d3be

Please sign in to comment.