Add profile writing capabilities for sampling profiles.
authorDiego Novillo <dnovillo@google.com>
Thu, 30 Oct 2014 18:00:06 +0000 (18:00 +0000)
committerDiego Novillo <dnovillo@google.com>
Thu, 30 Oct 2014 18:00:06 +0000 (18:00 +0000)
commite75c2b3e5421c1d0b19f3d166001778c7ee80023
tree6ecea71c3cd9efab6b454e2578fa60447a12284e
parent487dfd6e8038387fe66b4fe2c0fd90d0c3636f6e
Add profile writing capabilities for sampling profiles.

Summary:
This patch finishes up support for handling sampling profiles in both
text and binary formats. The new binary format uses uleb128 encoding to
represent numeric values. This makes profiles files about 25% smaller.

The profile writer class can write profiles in the existing text and the
new binary format. In subsequent patches, I will add the capability to
read (and perhaps write) profiles in the gcov format used by GCC.

Additionally, I will be adding support in llvm-profdata to manipulate
sampling profiles.

There was a bit of refactoring needed to separate some code that was in
the reader files, but is actually common to both the reader and writer.

The new test checks that reading the same profile encoded as text or
raw, produces the same results.

Reviewers: bogner, dexonsmith

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D6000

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220915 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/ProfileData/SampleProf.h [new file with mode: 0644]
include/llvm/ProfileData/SampleProfReader.h
include/llvm/ProfileData/SampleProfWriter.h [new file with mode: 0644]
lib/ProfileData/CMakeLists.txt
lib/ProfileData/SampleProf.cpp [new file with mode: 0644]
lib/ProfileData/SampleProfReader.cpp
lib/ProfileData/SampleProfWriter.cpp [new file with mode: 0644]
lib/Transforms/Scalar/SampleProfile.cpp
test/Transforms/SampleProfile/Inputs/fnptr.binprof [new file with mode: 0644]
test/Transforms/SampleProfile/Inputs/fnptr.prof [new file with mode: 0644]
test/Transforms/SampleProfile/fnptr.ll [new file with mode: 0644]
test/Transforms/SampleProfile/syntax.ll