summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-opt-report/OptReport.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2016-10-08 00:26:54 +0000
committerHal Finkel <hfinkel@anl.gov>2016-10-08 00:26:54 +0000
commitf495280a09e7be77b46ddd4a3a4c2a7addd03132 (patch)
treec6d16edcab48dcd1ebce8ec2852c13e113c5cf2c /llvm/tools/llvm-opt-report/OptReport.cpp
parent1b6aec8e2562e494431b968bad0884e978bc4e2b (diff)
downloadbcm5719-llvm-f495280a09e7be77b46ddd4a3a4c2a7addd03132.tar.gz
bcm5719-llvm-f495280a09e7be77b46ddd4a3a4c2a7addd03132.zip
[llvm-opt-report] Don't leave space for opts that never happen
Because screen space is precious, if an optimization (vectorization, for example) never happens, don't leave empty space for the associated markers on every line of the output. This makes the output much more compact, and allows for the later inclusion of markers for more (although perhaps rare) optimizations. llvm-svn: 283626
Diffstat (limited to 'llvm/tools/llvm-opt-report/OptReport.cpp')
-rw-r--r--llvm/tools/llvm-opt-report/OptReport.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/llvm/tools/llvm-opt-report/OptReport.cpp b/llvm/tools/llvm-opt-report/OptReport.cpp
index b82a73b6d94..0f0faa832bd 100644
--- a/llvm/tools/llvm-opt-report/OptReport.cpp
+++ b/llvm/tools/llvm-opt-report/OptReport.cpp
@@ -332,6 +332,10 @@ static bool writeReport(LocationInfoTy &LocationInfo) {
for (auto &LI : FI.second)
MaxLI |= LI.second;
+ bool NothingInlined = !MaxLI.Inlined.Transformed;
+ bool NothingUnrolled = !MaxLI.Unrolled.Transformed;
+ bool NothingVectorized = !MaxLI.Vectorized.Transformed;
+
unsigned VFDigits = llvm::utostr(MaxLI.VectorizationFactor).size();
unsigned ICDigits = llvm::utostr(MaxLI.InterleaveCount).size();
unsigned UCDigits = llvm::utostr(MaxLI.UnrollCount).size();
@@ -435,11 +439,12 @@ static bool writeReport(LocationInfoTy &LocationInfo) {
};
OS << llvm::format_decimal(L, LNDigits) << " ";
- OS << (LLI.Inlined.Transformed && InlinedCols < 2 ? "I" : " ");
+ OS << (LLI.Inlined.Transformed && InlinedCols < 2 ? "I" :
+ (NothingInlined ? "" : " "));
OS << (LLI.Unrolled.Transformed && UnrolledCols < 2 ?
- "U" + UStr(LLI) : " " + USpaces);
+ "U" + UStr(LLI) : (NothingUnrolled ? "" : " " + USpaces));
OS << (LLI.Vectorized.Transformed && VectorizedCols < 2 ?
- "V" + VStr(LLI) : " " + VSpaces);
+ "V" + VStr(LLI) : (NothingVectorized ? "" : " " + VSpaces));
OS << " | " << *LI << "\n";
@@ -449,11 +454,13 @@ static bool writeReport(LocationInfoTy &LocationInfo) {
(J.second.Vectorized.Transformed && VectorizedCols > 1)) {
OS << std::string(LNDigits + 1, ' ');
OS << (J.second.Inlined.Transformed &&
- InlinedCols > 1 ? "I" : " ");
+ InlinedCols > 1 ? "I" : (NothingInlined ? "" : " "));
OS << (J.second.Unrolled.Transformed &&
- UnrolledCols > 1 ? "U" + UStr(J.second) : " " + USpaces);
+ UnrolledCols > 1 ? "U" + UStr(J.second) :
+ (NothingUnrolled ? "" : " " + USpaces));
OS << (J.second.Vectorized.Transformed &&
- VectorizedCols > 1 ? "V" + VStr(J.second) : " " + VSpaces);
+ VectorizedCols > 1 ? "V" + VStr(J.second) :
+ (NothingVectorized ? "" : " " + VSpaces));
OS << " | " << std::string(J.first - 1, ' ') << "^\n";
}
OpenPOWER on IntegriCloud