[llvm] [AMDGPU][SplitModule] Handle !callees metadata (PR #108802)

Pierre van Houtryve via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 16 06:30:09 PDT 2024


================
@@ -476,12 +486,36 @@ void SplitGraph::Node::visitAllDependencies(
   }
 }
 
+/// Checks if \p I has MD_callees and if it does, parse it and put the function
+/// in \p Callees.
+///
+/// \returns true if there was metadata and it was parsed correctly. false if
+/// there was no MD or if it contained unknown entries.
+static bool handleCalleesMD(const Instruction &I,
+                            SmallVector<Function *> &Callees) {
+  auto *MD = I.getMetadata(LLVMContext::MD_callees);
+  if (!MD)
+    return false;
+
+  for (const auto &Op : MD->operands()) {
+    Function *Callee = mdconst::extract_or_null<Function>(Op);
+    if (!Callee)
+      return false;
----------------
Pierre-vh wrote:

IIRC I copy pasted it from another file, but the idea is just that if the MD is ill-formed we conservatively give up and assume the worst (indirect call to anything).

When this function returns false, we just end up discarding KnownCallees entirely

I'll refactor this to make it a bit clearer

https://github.com/llvm/llvm-project/pull/108802


More information about the llvm-commits mailing list