[llvm] Centralize prefetch target storage in MachineFunction. (PR #184194)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 3 00:02:14 PST 2026
================
@@ -2017,6 +2017,39 @@ void AsmPrinter::handleCallsiteForCallgraph(
}
}
+/// Helper to emit a symbol for the prefetch target associated with the given
+/// BBID and callsite index.
+void AsmPrinter::emitPrefetchTargetSymbol(unsigned BaseID,
+ unsigned CallsiteIndex) {
+ MCSymbol *PrefetchTargetSymbol = OutContext.getOrCreateSymbol(
+ Twine("__llvm_prefetch_target_") + MF->getName() + Twine("_") +
+ Twine(BaseID) + Twine("_") + Twine(static_cast<unsigned>(CallsiteIndex)));
+ // If the function is weak-linkage it may be replaced by a strong
+ // version, in which case the prefetch targets should also be replaced.
+ OutStreamer->emitSymbolAttribute(
+ PrefetchTargetSymbol,
+ MF->getFunction().isWeakForLinker() ? MCSA_Weak : MCSA_Global);
+ OutStreamer->emitLabel(PrefetchTargetSymbol);
+}
+
+/// Emit dangling prefetch targets that were not mapped to any basic block.
+void AsmPrinter::emitDanglingPrefetchTargets() {
+ const auto &MFPrefetchTargets = MF->getPrefetchTargets();
+ if (MFPrefetchTargets.empty())
+ return;
+ DenseSet<UniqueBBID> MFBBIDs;
+ for (auto &MBB : *MF)
----------------
arsenm wrote:
No auto
https://github.com/llvm/llvm-project/pull/184194
More information about the llvm-commits
mailing list