-
Notifications
You must be signed in to change notification settings - Fork 15k
[BOLT] fix print-mem-data not working #156332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-bolt Author: Haibo Jiang (Jianghibo) ChangesThis option Full diff: https://github.com/llvm/llvm-project/pull/156332.diff 3 Files Affected:
diff --git a/bolt/include/bolt/Core/MCPlusBuilder.h b/bolt/include/bolt/Core/MCPlusBuilder.h
index ae04891e791f9..2bcddc82648b6 100644
--- a/bolt/include/bolt/Core/MCPlusBuilder.h
+++ b/bolt/include/bolt/Core/MCPlusBuilder.h
@@ -2190,7 +2190,7 @@ class MCPlusBuilder {
}
/// Print each annotation attached to \p Inst.
- void printAnnotations(const MCInst &Inst, raw_ostream &OS) const;
+ void printAnnotations(const MCInst &Inst, raw_ostream &OS, bool PrintMemData = false) const;
/// Remove annotation with a given \p Index.
///
diff --git a/bolt/lib/Core/BinaryContext.cpp b/bolt/lib/Core/BinaryContext.cpp
index dd0d041692484..e937751450ea8 100644
--- a/bolt/lib/Core/BinaryContext.cpp
+++ b/bolt/lib/Core/BinaryContext.cpp
@@ -2027,7 +2027,7 @@ void BinaryContext::printInstruction(raw_ostream &OS, const MCInst &Instruction,
if (MCSymbol *Label = MIB->getInstLabel(Instruction))
OS << " # Label: " << *Label;
- MIB->printAnnotations(Instruction, OS);
+ MIB->printAnnotations(Instruction, OS, PrintMemData || opts::PrintMemData);
if (opts::PrintDebugInfo)
printDebugInfo(OS, Instruction, Function, DwCtx.get());
diff --git a/bolt/lib/Core/MCPlusBuilder.cpp b/bolt/lib/Core/MCPlusBuilder.cpp
index 7f962e14ea115..c580c548eb05b 100644
--- a/bolt/lib/Core/MCPlusBuilder.cpp
+++ b/bolt/lib/Core/MCPlusBuilder.cpp
@@ -379,7 +379,7 @@ void MCPlusBuilder::stripAnnotations(MCInst &Inst, bool KeepTC) const {
}
void MCPlusBuilder::printAnnotations(const MCInst &Inst,
- raw_ostream &OS) const {
+ raw_ostream &OS, bool PrintMemData) const {
std::optional<unsigned> FirstAnnotationOp = getFirstAnnotationOpIndex(Inst);
if (!FirstAnnotationOp)
return;
@@ -390,7 +390,10 @@ void MCPlusBuilder::printAnnotations(const MCInst &Inst,
const int64_t Value = extractAnnotationValue(Imm);
const auto *Annotation = reinterpret_cast<const MCAnnotation *>(Value);
if (Index >= MCAnnotation::kGeneric) {
- OS << " # " << AnnotationNames[Index - MCAnnotation::kGeneric] << ": ";
+ std::string AnnotationName = AnnotationNames[Index - MCAnnotation::kGeneric];
+ if (!PrintMemData && AnnotationName == "MemoryAccessProfile")
+ continue;
+ OS << " # " << AnnotationName << ": ";
Annotation->print(OS);
}
}
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
74f4346 to
d495aa8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your patch @Jianghibo.
Could you add a small test to acompany the patch? Also see some comment below.
bolt/lib/Core/MCPlusBuilder.cpp
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change overrides annotation printing to consider the flag. Previously it looks like those annotations were always printed, but now would only be printed if PrintMemData is true?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, if PrintMemData is enabled by default, then using a profile that includes memory access infomation will result in excessive printing of memory access details.
d495aa8 to
28ca894
Compare
Added the test case. Since |
9728d27 to
5b5b14f
Compare
|
Great, thanks for adding a test! Some minor improvements: Could you use Also, for numbers like Maybe a comment right above the split-file region oculd explain that 10 ( |
5b5b14f to
1ad467b
Compare
Yeah, these values are from other examples. Thanks for your comment, I have made the changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thanks for the changes! Please allow a day or two before merging.
|
Merging as @Jianghibo does not have the necessary permissions. |
This option
print-mem-datais currently not working, use this fix to restore its functionality.