mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-29 13:32:33 +00:00
fix PR12301 - llvm-bcanalyze should print to stdout, not stderr (except for errors).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153065 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cfe2998c3e
commit
e0ac6f8a7d
@ -331,7 +331,7 @@ static bool ParseBlock(BitstreamCursor &Stream, unsigned IndentLevel) {
|
|||||||
|
|
||||||
// BLOCKINFO is a special part of the stream.
|
// BLOCKINFO is a special part of the stream.
|
||||||
if (BlockID == bitc::BLOCKINFO_BLOCK_ID) {
|
if (BlockID == bitc::BLOCKINFO_BLOCK_ID) {
|
||||||
if (Dump) errs() << Indent << "<BLOCKINFO_BLOCK/>\n";
|
if (Dump) outs() << Indent << "<BLOCKINFO_BLOCK/>\n";
|
||||||
if (Stream.ReadBlockInfoBlock())
|
if (Stream.ReadBlockInfoBlock())
|
||||||
return Error("Malformed BlockInfoBlock");
|
return Error("Malformed BlockInfoBlock");
|
||||||
uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
|
uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
|
||||||
@ -345,16 +345,16 @@ static bool ParseBlock(BitstreamCursor &Stream, unsigned IndentLevel) {
|
|||||||
|
|
||||||
const char *BlockName = 0;
|
const char *BlockName = 0;
|
||||||
if (Dump) {
|
if (Dump) {
|
||||||
errs() << Indent << "<";
|
outs() << Indent << "<";
|
||||||
if ((BlockName = GetBlockName(BlockID, *Stream.getBitStreamReader())))
|
if ((BlockName = GetBlockName(BlockID, *Stream.getBitStreamReader())))
|
||||||
errs() << BlockName;
|
outs() << BlockName;
|
||||||
else
|
else
|
||||||
errs() << "UnknownBlock" << BlockID;
|
outs() << "UnknownBlock" << BlockID;
|
||||||
|
|
||||||
if (NonSymbolic && BlockName)
|
if (NonSymbolic && BlockName)
|
||||||
errs() << " BlockID=" << BlockID;
|
outs() << " BlockID=" << BlockID;
|
||||||
|
|
||||||
errs() << " NumWords=" << NumWords
|
outs() << " NumWords=" << NumWords
|
||||||
<< " BlockCodeSize=" << Stream.GetAbbrevIDWidth() << ">\n";
|
<< " BlockCodeSize=" << Stream.GetAbbrevIDWidth() << ">\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,11 +376,11 @@ static bool ParseBlock(BitstreamCursor &Stream, unsigned IndentLevel) {
|
|||||||
uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
|
uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
|
||||||
BlockStats.NumBits += BlockBitEnd-BlockBitStart;
|
BlockStats.NumBits += BlockBitEnd-BlockBitStart;
|
||||||
if (Dump) {
|
if (Dump) {
|
||||||
errs() << Indent << "</";
|
outs() << Indent << "</";
|
||||||
if (BlockName)
|
if (BlockName)
|
||||||
errs() << BlockName << ">\n";
|
outs() << BlockName << ">\n";
|
||||||
else
|
else
|
||||||
errs() << "UnknownBlock" << BlockID << ">\n";
|
outs() << "UnknownBlock" << BlockID << ">\n";
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -422,25 +422,25 @@ static bool ParseBlock(BitstreamCursor &Stream, unsigned IndentLevel) {
|
|||||||
BlockStats.CodeFreq[Code].NumAbbrev++;
|
BlockStats.CodeFreq[Code].NumAbbrev++;
|
||||||
|
|
||||||
if (Dump) {
|
if (Dump) {
|
||||||
errs() << Indent << " <";
|
outs() << Indent << " <";
|
||||||
if (const char *CodeName =
|
if (const char *CodeName =
|
||||||
GetCodeName(Code, BlockID, *Stream.getBitStreamReader()))
|
GetCodeName(Code, BlockID, *Stream.getBitStreamReader()))
|
||||||
errs() << CodeName;
|
outs() << CodeName;
|
||||||
else
|
else
|
||||||
errs() << "UnknownCode" << Code;
|
outs() << "UnknownCode" << Code;
|
||||||
if (NonSymbolic &&
|
if (NonSymbolic &&
|
||||||
GetCodeName(Code, BlockID, *Stream.getBitStreamReader()))
|
GetCodeName(Code, BlockID, *Stream.getBitStreamReader()))
|
||||||
errs() << " codeid=" << Code;
|
outs() << " codeid=" << Code;
|
||||||
if (AbbrevID != bitc::UNABBREV_RECORD)
|
if (AbbrevID != bitc::UNABBREV_RECORD)
|
||||||
errs() << " abbrevid=" << AbbrevID;
|
outs() << " abbrevid=" << AbbrevID;
|
||||||
|
|
||||||
for (unsigned i = 0, e = Record.size(); i != e; ++i)
|
for (unsigned i = 0, e = Record.size(); i != e; ++i)
|
||||||
errs() << " op" << i << "=" << (int64_t)Record[i];
|
outs() << " op" << i << "=" << (int64_t)Record[i];
|
||||||
|
|
||||||
errs() << "/>";
|
outs() << "/>";
|
||||||
|
|
||||||
if (BlobStart) {
|
if (BlobStart) {
|
||||||
errs() << " blob data = ";
|
outs() << " blob data = ";
|
||||||
bool BlobIsPrintable = true;
|
bool BlobIsPrintable = true;
|
||||||
for (unsigned i = 0; i != BlobLen; ++i)
|
for (unsigned i = 0; i != BlobLen; ++i)
|
||||||
if (!isprint(BlobStart[i])) {
|
if (!isprint(BlobStart[i])) {
|
||||||
@ -449,12 +449,12 @@ static bool ParseBlock(BitstreamCursor &Stream, unsigned IndentLevel) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (BlobIsPrintable)
|
if (BlobIsPrintable)
|
||||||
errs() << "'" << std::string(BlobStart, BlobStart+BlobLen) <<"'";
|
outs() << "'" << std::string(BlobStart, BlobStart+BlobLen) <<"'";
|
||||||
else
|
else
|
||||||
errs() << "unprintable, " << BlobLen << " bytes.";
|
outs() << "unprintable, " << BlobLen << " bytes.";
|
||||||
}
|
}
|
||||||
|
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -525,58 +525,58 @@ static int AnalyzeBitcode() {
|
|||||||
++NumTopBlocks;
|
++NumTopBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dump) errs() << "\n\n";
|
if (Dump) outs() << "\n\n";
|
||||||
|
|
||||||
uint64_t BufferSizeBits = (EndBufPtr-BufPtr)*CHAR_BIT;
|
uint64_t BufferSizeBits = (EndBufPtr-BufPtr)*CHAR_BIT;
|
||||||
// Print a summary of the read file.
|
// Print a summary of the read file.
|
||||||
errs() << "Summary of " << InputFilename << ":\n";
|
outs() << "Summary of " << InputFilename << ":\n";
|
||||||
errs() << " Total size: ";
|
outs() << " Total size: ";
|
||||||
PrintSize(BufferSizeBits);
|
PrintSize(BufferSizeBits);
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
errs() << " Stream type: ";
|
outs() << " Stream type: ";
|
||||||
switch (CurStreamType) {
|
switch (CurStreamType) {
|
||||||
case UnknownBitstream: errs() << "unknown\n"; break;
|
case UnknownBitstream: outs() << "unknown\n"; break;
|
||||||
case LLVMIRBitstream: errs() << "LLVM IR\n"; break;
|
case LLVMIRBitstream: outs() << "LLVM IR\n"; break;
|
||||||
}
|
}
|
||||||
errs() << " # Toplevel Blocks: " << NumTopBlocks << "\n";
|
outs() << " # Toplevel Blocks: " << NumTopBlocks << "\n";
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
|
|
||||||
// Emit per-block stats.
|
// Emit per-block stats.
|
||||||
errs() << "Per-block Summary:\n";
|
outs() << "Per-block Summary:\n";
|
||||||
for (std::map<unsigned, PerBlockIDStats>::iterator I = BlockIDStats.begin(),
|
for (std::map<unsigned, PerBlockIDStats>::iterator I = BlockIDStats.begin(),
|
||||||
E = BlockIDStats.end(); I != E; ++I) {
|
E = BlockIDStats.end(); I != E; ++I) {
|
||||||
errs() << " Block ID #" << I->first;
|
outs() << " Block ID #" << I->first;
|
||||||
if (const char *BlockName = GetBlockName(I->first, StreamFile))
|
if (const char *BlockName = GetBlockName(I->first, StreamFile))
|
||||||
errs() << " (" << BlockName << ")";
|
outs() << " (" << BlockName << ")";
|
||||||
errs() << ":\n";
|
outs() << ":\n";
|
||||||
|
|
||||||
const PerBlockIDStats &Stats = I->second;
|
const PerBlockIDStats &Stats = I->second;
|
||||||
errs() << " Num Instances: " << Stats.NumInstances << "\n";
|
outs() << " Num Instances: " << Stats.NumInstances << "\n";
|
||||||
errs() << " Total Size: ";
|
outs() << " Total Size: ";
|
||||||
PrintSize(Stats.NumBits);
|
PrintSize(Stats.NumBits);
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
double pct = (Stats.NumBits * 100.0) / BufferSizeBits;
|
double pct = (Stats.NumBits * 100.0) / BufferSizeBits;
|
||||||
errs() << " Percent of file: " << format("%2.4f%%", pct) << "\n";
|
errs() << " Percent of file: " << format("%2.4f%%", pct) << "\n";
|
||||||
if (Stats.NumInstances > 1) {
|
if (Stats.NumInstances > 1) {
|
||||||
errs() << " Average Size: ";
|
outs() << " Average Size: ";
|
||||||
PrintSize(Stats.NumBits/(double)Stats.NumInstances);
|
PrintSize(Stats.NumBits/(double)Stats.NumInstances);
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
errs() << " Tot/Avg SubBlocks: " << Stats.NumSubBlocks << "/"
|
outs() << " Tot/Avg SubBlocks: " << Stats.NumSubBlocks << "/"
|
||||||
<< Stats.NumSubBlocks/(double)Stats.NumInstances << "\n";
|
<< Stats.NumSubBlocks/(double)Stats.NumInstances << "\n";
|
||||||
errs() << " Tot/Avg Abbrevs: " << Stats.NumAbbrevs << "/"
|
outs() << " Tot/Avg Abbrevs: " << Stats.NumAbbrevs << "/"
|
||||||
<< Stats.NumAbbrevs/(double)Stats.NumInstances << "\n";
|
<< Stats.NumAbbrevs/(double)Stats.NumInstances << "\n";
|
||||||
errs() << " Tot/Avg Records: " << Stats.NumRecords << "/"
|
outs() << " Tot/Avg Records: " << Stats.NumRecords << "/"
|
||||||
<< Stats.NumRecords/(double)Stats.NumInstances << "\n";
|
<< Stats.NumRecords/(double)Stats.NumInstances << "\n";
|
||||||
} else {
|
} else {
|
||||||
errs() << " Num SubBlocks: " << Stats.NumSubBlocks << "\n";
|
outs() << " Num SubBlocks: " << Stats.NumSubBlocks << "\n";
|
||||||
errs() << " Num Abbrevs: " << Stats.NumAbbrevs << "\n";
|
outs() << " Num Abbrevs: " << Stats.NumAbbrevs << "\n";
|
||||||
errs() << " Num Records: " << Stats.NumRecords << "\n";
|
outs() << " Num Records: " << Stats.NumRecords << "\n";
|
||||||
}
|
}
|
||||||
if (Stats.NumRecords) {
|
if (Stats.NumRecords) {
|
||||||
double pct = (Stats.NumAbbreviatedRecords * 100.0) / Stats.NumRecords;
|
double pct = (Stats.NumAbbreviatedRecords * 100.0) / Stats.NumRecords;
|
||||||
errs() << " Percent Abbrevs: " << format("%2.4f%%", pct) << "\n";
|
outs() << " Percent Abbrevs: " << format("%2.4f%%", pct) << "\n";
|
||||||
}
|
}
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
|
|
||||||
// Print a histogram of the codes we see.
|
// Print a histogram of the codes we see.
|
||||||
if (!NoHistogram && !Stats.CodeFreq.empty()) {
|
if (!NoHistogram && !Stats.CodeFreq.empty()) {
|
||||||
@ -587,7 +587,7 @@ static int AnalyzeBitcode() {
|
|||||||
std::stable_sort(FreqPairs.begin(), FreqPairs.end());
|
std::stable_sort(FreqPairs.begin(), FreqPairs.end());
|
||||||
std::reverse(FreqPairs.begin(), FreqPairs.end());
|
std::reverse(FreqPairs.begin(), FreqPairs.end());
|
||||||
|
|
||||||
errs() << "\tRecord Histogram:\n";
|
outs() << "\tRecord Histogram:\n";
|
||||||
fprintf(stderr, "\t\t Count # Bits %% Abv Record Kind\n");
|
fprintf(stderr, "\t\t Count # Bits %% Abv Record Kind\n");
|
||||||
for (unsigned i = 0, e = FreqPairs.size(); i != e; ++i) {
|
for (unsigned i = 0, e = FreqPairs.size(); i != e; ++i) {
|
||||||
const PerRecordStats &RecStats = Stats.CodeFreq[FreqPairs[i].second];
|
const PerRecordStats &RecStats = Stats.CodeFreq[FreqPairs[i].second];
|
||||||
@ -607,7 +607,7 @@ static int AnalyzeBitcode() {
|
|||||||
else
|
else
|
||||||
fprintf(stderr, "UnknownCode%d\n", FreqPairs[i].second);
|
fprintf(stderr, "UnknownCode%d\n", FreqPairs[i].second);
|
||||||
}
|
}
|
||||||
errs() << "\n";
|
outs() << "\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user