[PATCH] D136394: [BOLT][PseudoProbe] Support new pseudo probe encoding
Hongtao Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 26 11:11:03 PDT 2022
hoy updated this revision to Diff 470878.
hoy added a comment.
Rebasing
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136394/new/
https://reviews.llvm.org/D136394
Files:
bolt/lib/Rewrite/RewriteInstance.cpp
Index: bolt/lib/Rewrite/RewriteInstance.cpp
===================================================================
--- bolt/lib/Rewrite/RewriteInstance.cpp
+++ bolt/lib/Rewrite/RewriteInstance.cpp
@@ -599,10 +599,19 @@
errs() << "BOLT-WARNING: fail in building GUID2FuncDescMap\n";
return;
}
+
+ MCPseudoProbeDecoder::Uint64Set GuidFilter;
+ MCPseudoProbeDecoder::Uint64Map FuncStartAddrs;
+ for (const BinaryFunction *F : BC->getAllBinaryFunctions()) {
+ for (const MCSymbol *Sym : F->getSymbols()) {
+ FuncStartAddrs[Function::getGUID(NameResolver::restore(Sym->getName()))] =
+ F->getAddress();
+ }
+ }
Contents = PseudoProbeSection->getContents();
if (!BC->ProbeDecoder.buildAddress2ProbeMap(
- reinterpret_cast<const uint8_t *>(Contents.data()),
- Contents.size())) {
+ reinterpret_cast<const uint8_t *>(Contents.data()), Contents.size(),
+ GuidFilter, FuncStartAddrs)) {
BC->ProbeDecoder.getAddress2ProbesMap().clear();
errs() << "BOLT-WARNING: fail in building Address2ProbeMap\n";
return;
@@ -3426,6 +3435,8 @@
// Address of the first probe is absolute.
// Other probes' address are represented by delta
auto EmitDecodedPseudoProbe = [&](MCDecodedPseudoProbe *&CurProbe) {
+ assert(!isSentinelProbe(CurProbe->getAttributes()) &&
+ "Sentinel probes should not be emitted");
EmitULEB128IntValue(CurProbe->getIndex());
uint8_t PackedType = CurProbe->getType() | (CurProbe->getAttributes() << 4);
uint8_t Flag =
@@ -3530,9 +3541,17 @@
reinterpret_cast<const uint8_t *>(DescContents.data()),
DescContents.size());
StringRef ProbeContents = PseudoProbeSection->getOutputContents();
+ MCPseudoProbeDecoder::Uint64Set GuidFilter;
+ MCPseudoProbeDecoder::Uint64Map FuncStartAddrs;
+ for (const BinaryFunction *F : BC->getAllBinaryFunctions()) {
+ const uint64_t Addr =
+ F->isEmitted() ? F->getOutputAddress() : F->getAddress();
+ FuncStartAddrs[Function::getGUID(
+ NameResolver::restore(F->getOneName()))] = Addr;
+ }
DummyDecoder.buildAddress2ProbeMap(
reinterpret_cast<const uint8_t *>(ProbeContents.data()),
- ProbeContents.size());
+ ProbeContents.size(), GuidFilter, FuncStartAddrs);
DummyDecoder.printProbesForAllAddresses(outs());
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136394.470878.patch
Type: text/x-patch
Size: 2371 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221026/0eb08ba7/attachment.bin>
More information about the llvm-commits
mailing list