[llvm] CFGPrinter: fix accidentally quadratic behavior (PR #125396)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 2 03:38:33 PST 2025
================
@@ -208,3 +225,38 @@ bool DOTGraphTraits<DOTFuncInfo *>::isNodeHidden(const BasicBlock *Node,
}
return false;
}
+
+std::string DOTGraphTraits<DOTFuncInfo *>::getCompleteNodeLabel(
+ const BasicBlock *Node, DOTFuncInfo *CFGInfo,
+ function_ref<void(raw_string_ostream &, const BasicBlock &)>
+ HandleBasicBlock,
+ function_ref<void(std::string &, unsigned &, unsigned)> HandleComment) {
+ if (HandleBasicBlock)
+ return CompleteNodeLabelString(Node, HandleBasicBlock, HandleComment);
+
+ // Default basic block printing
+ std::optional<ModuleSlotTracker> MSTStorage;
+ ModuleSlotTracker *MST = nullptr;
+
+ if (CFGInfo) {
+ MST = CFGInfo->getModuleSlotTracker();
+ } else {
+ MSTStorage.emplace(Node->getModule());
+ MST = &*MSTStorage;
+ }
+
+ return CompleteNodeLabelString(
+ Node,
+ function_ref<void(raw_string_ostream &, const BasicBlock &)>(
+ [MST](raw_string_ostream &OS, const BasicBlock &Node) -> void {
+ // Prepend label name
+ Node.printAsOperand(OS, false);
----------------
nikic wrote:
Should pass MST here as well?
https://github.com/llvm/llvm-project/pull/125396
More information about the llvm-commits
mailing list