Author: Quentin Colombet Date: 2021-01-11T18:02:49-08:00 New Revision: 905623b64df0c865d4dddc4a60aff9751fbaa0e0
URL: https://github.com/llvm/llvm-project/commit/905623b64df0c865d4dddc4a60aff9751fbaa0e0 DIFF: https://github.com/llvm/llvm-project/commit/905623b64df0c865d4dddc4a60aff9751fbaa0e0.diff LOG: [NFC][LICM] Minor improvements to debug output Added a utility function in Value class to print block name and use block labels for unnamed blocks. Changed LICM to call this function in its debug output. Patch by Xiaoqing Wu <xiaoqing...@apple.com> Differential Revision: https://reviews.llvm.org/D93577 Added: Modified: llvm/include/llvm/IR/Value.h llvm/lib/IR/Value.cpp llvm/lib/Transforms/Scalar/LICM.cpp Removed: ################################################################################ diff --git a/llvm/include/llvm/IR/Value.h b/llvm/include/llvm/IR/Value.h index 4f0336b44d28..e84840a30e96 100644 --- a/llvm/include/llvm/IR/Value.h +++ b/llvm/include/llvm/IR/Value.h @@ -281,6 +281,10 @@ class Value { /// \note It is an error to call V->takeName(V). void takeName(Value *V); +#ifndef NDEBUG + std::string getNameOrAsOperand() const; +#endif + /// Change all uses of this to point to a new Value. /// /// Go through the uses list for this definition and make each use point to diff --git a/llvm/lib/IR/Value.cpp b/llvm/lib/IR/Value.cpp index 51a84b6af241..572f37a32410 100644 --- a/llvm/lib/IR/Value.cpp +++ b/llvm/lib/IR/Value.cpp @@ -430,6 +430,18 @@ void Value::takeName(Value *V) { ST->reinsertValue(this); } +#ifndef NDEBUG +std::string Value::getNameOrAsOperand() const { + if (!getName().empty()) + return std::string(getName()); + + std::string BBName; + raw_string_ostream OS(BBName); + printAsOperand(OS, false); + return OS.str(); +} +#endif + void Value::assertModuleIsMaterializedImpl() const { #ifndef NDEBUG const GlobalValue *GV = dyn_cast<GlobalValue>(this); diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp index c26d588d9d45..d2b4ba296f41 100644 --- a/llvm/lib/Transforms/Scalar/LICM.cpp +++ b/llvm/lib/Transforms/Scalar/LICM.cpp @@ -221,6 +221,9 @@ struct LegacyLICMPass : public LoopPass { if (skipLoop(L)) return false; + LLVM_DEBUG(dbgs() << "Perform LICM on Loop with header at block " + << L->getHeader()->getNameOrAsOperand() << "\n"); + auto *SE = getAnalysisIfAvailable<ScalarEvolutionWrapperPass>(); MemorySSA *MSSA = EnableMSSALoopDependency ? (&getAnalysis<MemorySSAWrapperPass>().getMSSA()) @@ -697,9 +700,10 @@ class ControlFlowHoister { // If not involved in a pending branch, hoist to preheader BasicBlock *InitialPreheader = CurLoop->getLoopPreheader(); if (It == HoistableBranches.end()) { - LLVM_DEBUG(dbgs() << "LICM using " << InitialPreheader->getName() - << " as hoist destination for " << BB->getName() - << "\n"); + LLVM_DEBUG(dbgs() << "LICM using " + << InitialPreheader->getNameOrAsOperand() + << " as hoist destination for " + << BB->getNameOrAsOperand() << "\n"); HoistDestinationMap[BB] = InitialPreheader; return InitialPreheader; } @@ -978,7 +982,7 @@ bool llvm::hoistRegion(DomTreeNode *N, AAResults *AA, LoopInfo *LI, HoistPoint = Dominator->getTerminator(); } LLVM_DEBUG(dbgs() << "LICM rehoisting to " - << HoistPoint->getParent()->getName() + << HoistPoint->getParent()->getNameOrAsOperand() << ": " << *I << "\n"); moveInstructionBefore(*I, *HoistPoint, *SafetyInfo, MSSAU, SE); HoistPoint = I; @@ -1737,8 +1741,8 @@ static void hoist(Instruction &I, const DominatorTree *DT, const Loop *CurLoop, BasicBlock *Dest, ICFLoopSafetyInfo *SafetyInfo, MemorySSAUpdater *MSSAU, ScalarEvolution *SE, OptimizationRemarkEmitter *ORE) { - LLVM_DEBUG(dbgs() << "LICM hoisting to " << Dest->getName() << ": " << I - << "\n"); + LLVM_DEBUG(dbgs() << "LICM hoisting to " << Dest->getNameOrAsOperand() << ": " + << I << "\n"); ORE->emit([&]() { return OptimizationRemark(DEBUG_TYPE, "Hoisted", &I) << "hoisting " << ore::NV("Inst", &I); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits