================
@@ -446,6 +503,56 @@ size_t YAMLProfileReader::matchWithLTOCommonName() {
   return MatchedWithLTOCommonName;
 }
 
+size_t YAMLProfileReader::matchWithCallGraph(BinaryContext &BC) {
+  if (!opts::MatchWithCallGraph)
+    return 0;
+
+  size_t MatchedWithCallGraph = 0;
+  CGMatcher.computeBFNeighborHashes(BC);
+  CGMatcher.constructYAMLFCG(YamlBP, IdToYamLBF);
+
+  // Matches YAMLBF to BFs with neighbor hashes.
+  for (yaml::bolt::BinaryFunctionProfile &YamlBF : YamlBP.Functions) {
+    if (YamlBF.Used)
+      continue;
+    auto It = CGMatcher.YamlBFAdjacencyMap.find(&YamlBF);
+    if (It == CGMatcher.YamlBFAdjacencyMap.end())
+      continue;
+    // Computes profiled function's neighbor hash.
+    std::set<yaml::bolt::BinaryFunctionProfile *> &AdjacentFunctions =
----------------
shawbyoung wrote:

Although, this did make me think to use std::find and a SmallVector instead - I 
anticipate these sets to generally be quite small. I'll run some small tests 
and see if that improves performance 

https://github.com/llvm/llvm-project/pull/98125
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to