[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:07:08 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;
+ Callees.push_back(Callee);
+ }
+
+ return true;
+}
+
void SplitGraph::buildGraph(CallGraph &CG) {
SplitModuleTimer SMT("buildGraph", "graph construction");
LLVM_DEBUG(
dbgs()
<< "[build graph] constructing graph representation of the input\n");
+ // FIXME(?): Is the callgraph really worth using if we have to iterate the
+ // function again whenever it fails to give us enough information?
----------------
jmmartinez wrote:
> You're giving the callgraph a bit too much credit :)
:*(
https://github.com/llvm/llvm-project/pull/108802
More information about the llvm-commits
mailing list