[llvm-branch-commits] [llvm] [BOLT] Use BAT interfaces in YAMLProfileWriter::convert (PR #86219)

Maksim Panchenko via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Apr 1 15:50:34 PDT 2024


================
@@ -27,25 +28,55 @@ namespace bolt {
 
 /// Set CallSiteInfo destination fields from \p Symbol and return a target
 /// BinaryFunction for that symbol.
-static const BinaryFunction *setCSIDestination(const BinaryContext &BC,
-                                               yaml::bolt::CallSiteInfo &CSI,
-                                               const MCSymbol *Symbol) {
+static const BinaryFunction *
+setCSIDestination(const BinaryContext &BC, yaml::bolt::CallSiteInfo &CSI,
+                  const MCSymbol *Symbol, const BoltAddressTranslation *BAT) {
   CSI.DestId = 0; // designated for unknown functions
   CSI.EntryDiscriminator = 0;
+  auto setBATSecondaryEntry = [&](const BinaryFunction *const Callee) {
+    // The symbol could be a secondary entry in a cold fragment.
+    ErrorOr<uint64_t> SymbolValue = BC.getSymbolValue(*Symbol);
+    if (SymbolValue.getError())
----------------
maksfb wrote:

Can we get a condition when `getFunctionForSymbol(Symbol)` return a function, but the symbol has no set value?

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


More information about the llvm-branch-commits mailing list