[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