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

Juan Manuel Martinez CaamaƱo via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 16 08:10:26 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;
----------------
jmmartinez wrote:

It is not discarded. The for-loop continues iterating over the instructions and if it finds another indirect call with well-formed metadata it may push the callees before the ill-formed one in the set.

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


More information about the llvm-commits mailing list