================ @@ -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