[llvm] r250239 - Add missing #include, found by modules build.
Richard Smith via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 5 14:56:41 PST 2016
On Tue, Oct 20, 2015 at 11:14 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:
> Hi,
>
> Reverted in r250882 in the meantime, assuming the original patch was
> committed unintentionally.
>
> I’m not sure if you meant to commit the LoopVersioning.h file only
> (likely) or if the include in llvm-bcanalyzer was intended as well. Feel
> free to recommit the appropriate part.
>
Oops, sorry, bad mail filters ate this thread :( Thanks for the revert.
> —
> Mehdi
>
> On Oct 16, 2015, at 2:02 PM, David Blaikie via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> Ping
>
> On Tue, Oct 13, 2015 at 6:06 PM, Sean Silva via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Are all the llvm-bcanalyzer.cpp changes intentional?
>>
>> -- Sean Silva
>>
>> On Tue, Oct 13, 2015 at 3:24 PM, Richard Smith via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: rsmith
>>> Date: Tue Oct 13 17:24:10 2015
>>> New Revision: 250239
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=250239&view=rev
>>> Log:
>>> Add missing #include, found by modules build.
>>>
>>> Modified:
>>> llvm/trunk/include/llvm/Transforms/Utils/LoopVersioning.h
>>> llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
>>>
>>> Modified: llvm/trunk/include/llvm/Transforms/Utils/LoopVersioning.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/LoopVersioning.h?rev=250239&r1=250238&r2=250239&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/Transforms/Utils/LoopVersioning.h (original)
>>> +++ llvm/trunk/include/llvm/Transforms/Utils/LoopVersioning.h Tue Oct 13
>>> 17:24:10 2015
>>> @@ -16,6 +16,7 @@
>>> #ifndef LLVM_TRANSFORMS_UTILS_LOOPVERSIONING_H
>>> #define LLVM_TRANSFORMS_UTILS_LOOPVERSIONING_H
>>>
>>> +#include "llvm/Analysis/LoopAccessAnalysis.h"
>>> #include "llvm/Transforms/Utils/ValueMapper.h"
>>> #include "llvm/Transforms/Utils/LoopUtils.h"
>>>
>>>
>>> Modified: llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp?rev=250239&r1=250238&r2=250239&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp (original)
>>> +++ llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp Tue Oct 13
>>> 17:24:10 2015
>>> @@ -35,6 +35,7 @@
>>> #include "llvm/Support/CommandLine.h"
>>> #include "llvm/Support/Format.h"
>>> #include "llvm/Support/ManagedStatic.h"
>>> +#include "llvm/Support/MathExtras.h"
>>> #include "llvm/Support/MemoryBuffer.h"
>>> #include "llvm/Support/PrettyStackTrace.h"
>>> #include "llvm/Support/Signals.h"
>>> @@ -335,11 +336,20 @@ static const char *GetCodeName(unsigned
>>> }
>>>
>>> struct PerRecordStats {
>>> + /// The number of times this record code has been seen.
>>> unsigned NumInstances;
>>> + /// The number of times this record code has been seen abbreviated.
>>> unsigned NumAbbrev;
>>> + /// The total number of bits used for this record on disk.
>>> uint64_t TotalBits;
>>> -
>>> - PerRecordStats() : NumInstances(0), NumAbbrev(0), TotalBits(0) {}
>>> + /// The number of bits that would have been used if no abbrevs were
>>> used.
>>> + uint64_t UnabbrevBits;
>>> + /// The number of bits that would be used if "good" abbreviations
>>> were used.
>>> + uint64_t GoodAbbrevBits;
>>> +
>>> + PerRecordStats()
>>> + : NumInstances(0), NumAbbrev(0), TotalBits(0), UnabbrevBits(0),
>>> + GoodAbbrevBits(0) {}
>>> };
>>>
>>> struct PerBlockIDStats {
>>> @@ -378,6 +388,58 @@ static bool Error(const Twine &Err) {
>>> return true;
>>> }
>>>
>>> +static unsigned computeVBR6Bits(uint64_t Val) {
>>> + unsigned Bits = 0;
>>> + do {
>>> + Bits += 6;
>>> + } while (Val >>= 5);
>>> + return Bits;
>>> +}
>>> +
>>> +static void addBlobSize(uint64_t &Bits, StringRef Blob) {
>>> + // Blob size is always VBR6.
>>> + Bits += computeVBR6Bits(Blob.size());
>>> +
>>> + // Blob is always 32-bit aligned, and padded to a multiple of 32 bits.
>>> + RoundUpToAlignment(Bits, 32);
>>> + Bits += Blob.size() * 8;
>>> + RoundUpToAlignment(Bits, 32);
>>> +}
>>> +
>>> +/// \brief Compute the number of bits that would be used by the record
>>> if it
>>> +/// were unabbreviated.
>>> +static uint64_t computeUnabbrevBits(unsigned AbbrevIDWidth, unsigned
>>> Code,
>>> + ArrayRef<uint64_t> Record,
>>> StringRef Blob) {
>>> + uint64_t Bits =
>>> + AbbrevIDWidth + computeVBR6Bits(Code) +
>>> computeVBR6Bits(Record.size());
>>> + // Use VBR6 for all fields.
>>> + for (uint64_t Val : Record)
>>> + Bits += computeVBR6Bits(Val);
>>> + // Assume Blob representation for the blob, even though a Blob cannot
>>> + // be unabbreviated.
>>> + if (!Blob.empty())
>>> + addBlobSize(Bits, Blob);
>>> + return Bits;
>>> +}
>>> +
>>> +/// \brief Compute the number of bits that would be used by the record
>>> if a
>>> +/// "good" abbreviation were used. We use an extremely simple heuristic
>>> for
>>> +/// "good"ness: pick the best abbrev that uses a Literal for the record
>>> code,
>>> +/// a normal Blob field for the blob (if present), and a minimal-width
>>> Fixed
>>> +/// field for everything else.
>>> +static uint64_t computeGoodAbbrevBits(unsigned AbbrevIDWidth, unsigned
>>> Code,
>>> + ArrayRef<uint64_t> Record,
>>> + StringRef Blob) {
>>> + uint64_t Bits = AbbrevIDWidth;
>>> + // Use Fixed for all fields (other than the record code).
>>> + for (uint64_t Val : Record)
>>> + Bits += 64 - llvm::countLeadingZeros(Val);
>>> + // Assume Blob representation for the blob.
>>> + if (!Blob.empty())
>>> + addBlobSize(Bits, Blob);
>>> + return Bits;
>>> +}
>>> +
>>> /// ParseBlock - Read a block, updating statistics, etc.
>>> static bool ParseBlock(BitstreamCursor &Stream, unsigned BlockID,
>>> unsigned IndentLevel, CurStreamTypeType
>>> CurStreamType) {
>>> @@ -482,6 +544,10 @@ static bool ParseBlock(BitstreamCursor &
>>> BlockStats.CodeFreq[Code].NumInstances++;
>>> BlockStats.CodeFreq[Code].TotalBits +=
>>> Stream.GetCurrentBitNo()-RecordStartBit;
>>> + BlockStats.CodeFreq[Code].UnabbrevBits +=
>>> + computeUnabbrevBits(Stream.getAbbrevIDWidth(), Code, Record,
>>> Blob);
>>> + BlockStats.CodeFreq[Code].GoodAbbrevBits +=
>>> + computeGoodAbbrevBits(Stream.getAbbrevIDWidth(), Code, Record,
>>> Blob);
>>> if (Entry.ID != bitc::UNABBREV_RECORD) {
>>> BlockStats.CodeFreq[Code].NumAbbrev++;
>>> ++BlockStats.NumAbbreviatedRecords;
>>> @@ -720,28 +786,36 @@ static int AnalyzeBitcode() {
>>>
>>> // Print a histogram of the codes we see.
>>> if (!NoHistogram && !Stats.CodeFreq.empty()) {
>>> - std::vector<std::pair<unsigned, unsigned> > FreqPairs; //
>>> <freq,code>
>>> + std::vector<std::pair<uint64_t, unsigned> > FreqPairs; //
>>> <bits,code>
>>> for (unsigned i = 0, e = Stats.CodeFreq.size(); i != e; ++i)
>>> - if (unsigned Freq = Stats.CodeFreq[i].NumInstances)
>>> + if (unsigned Freq = Stats.CodeFreq[i].TotalBits)
>>> FreqPairs.push_back(std::make_pair(Freq, i));
>>> std::stable_sort(FreqPairs.begin(), FreqPairs.end());
>>> std::reverse(FreqPairs.begin(), FreqPairs.end());
>>>
>>> outs() << "\tRecord Histogram:\n";
>>> - outs() << "\t\t Count # Bits %% Abv Record Kind\n";
>>> + outs() << "\t\t Count # Bits % Abv % Cmp (cur/best)
>>> Record Kind\n";
>>> for (unsigned i = 0, e = FreqPairs.size(); i != e; ++i) {
>>> const PerRecordStats &RecStats =
>>> Stats.CodeFreq[FreqPairs[i].second];
>>>
>>> - outs() << format("\t\t%7d %9lu",
>>> + outs() << format("\t\t%7d %9lu ",
>>> RecStats.NumInstances,
>>> (unsigned long)RecStats.TotalBits);
>>>
>>> if (RecStats.NumAbbrev)
>>> outs() <<
>>> - format("%7.2f ",
>>> + format("%7.2f ",
>>>
>>> (double)RecStats.NumAbbrev/RecStats.NumInstances*100);
>>> else
>>> - outs() << " ";
>>> + outs() << " ";
>>> +
>>> + if (RecStats.UnabbrevBits)
>>> + outs() << format(
>>> + "%7.2f / %7.2f ",
>>> + (double)RecStats.TotalBits / RecStats.UnabbrevBits * 100,
>>> + (double)RecStats.GoodAbbrevBits / RecStats.UnabbrevBits *
>>> 100);
>>> + else
>>> + outs() << " ";
>>>
>>> if (const char *CodeName =
>>> GetCodeName(FreqPairs[i].second, I->first, StreamFile,
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160205/1baf2762/attachment-0001.html>
More information about the llvm-commits
mailing list