diff options
author | Easwaran Raman <eraman@google.com> | 2016-02-19 03:15:33 +0000 |
---|---|---|
committer | Easwaran Raman <eraman@google.com> | 2016-02-19 03:15:33 +0000 |
commit | 40ee23dbd24e08062b0404d16cd56ab102c4f596 (patch) | |
tree | ed729901bc24eecbf95d3a81028137eecc6e2946 /llvm/unittests/ProfileData/SampleProfTest.cpp | |
parent | bd1b8c088963e7f7ea7417e8a4fe5cabdaf500ad (diff) | |
download | bcm5719-llvm-40ee23dbd24e08062b0404d16cd56ab102c4f596.tar.gz bcm5719-llvm-40ee23dbd24e08062b0404d16cd56ab102c4f596.zip |
Add profile summary support for sample profile.
Differential Revision: http://reviews.llvm.org/D17178
llvm-svn: 261304
Diffstat (limited to 'llvm/unittests/ProfileData/SampleProfTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/SampleProfTest.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/unittests/ProfileData/SampleProfTest.cpp b/llvm/unittests/ProfileData/SampleProfTest.cpp index cc3c2f5306e..711310785c7 100644 --- a/llvm/unittests/ProfileData/SampleProfTest.cpp +++ b/llvm/unittests/ProfileData/SampleProfTest.cpp @@ -55,6 +55,10 @@ struct SampleProfTest : ::testing::Test { FooSamples.addTotalSamples(7711); FooSamples.addHeadSamples(610); FooSamples.addBodySamples(1, 0, 610); + FooSamples.addBodySamples(2, 0, 600); + FooSamples.addBodySamples(4, 0, 60000); + FooSamples.addBodySamples(8, 0, 60351); + FooSamples.addBodySamples(10, 0, 605); StringRef BarName("_Z3bari"); FunctionSamples BarSamples; @@ -88,6 +92,32 @@ struct SampleProfTest : ::testing::Test { FunctionSamples &ReadBarSamples = ReadProfiles[BarName]; ASSERT_EQ(20301u, ReadBarSamples.getTotalSamples()); ASSERT_EQ(1437u, ReadBarSamples.getHeadSamples()); + + SampleProfileSummary &Summary = Reader->getSummary(); + ASSERT_EQ(123603u, Summary.getTotalSamples()); + ASSERT_EQ(6u, Summary.getNumLinesWithSamples()); + ASSERT_EQ(2u, Summary.getNumFunctions()); + ASSERT_EQ(1437u, Summary.getMaxHeadSamples()); + ASSERT_EQ(60351u, Summary.getMaxSamplesPerLine()); + + std::vector<ProfileSummaryEntry> &Details = Summary.getDetailedSummary(); + uint32_t Cutoff = 800000; + auto Predicate = [&Cutoff](const ProfileSummaryEntry &PE) { + return PE.Cutoff == Cutoff; + }; + auto EightyPerc = std::find_if(Details.begin(), Details.end(), Predicate); + Cutoff = 900000; + auto NinetyPerc = std::find_if(Details.begin(), Details.end(), Predicate); + Cutoff = 950000; + auto NinetyFivePerc = + std::find_if(Details.begin(), Details.end(), Predicate); + Cutoff = 990000; + auto NinetyNinePerc = + std::find_if(Details.begin(), Details.end(), Predicate); + ASSERT_EQ(60000u, EightyPerc->MinCount); + ASSERT_EQ(60000u, NinetyPerc->MinCount); + ASSERT_EQ(60000u, NinetyFivePerc->MinCount); + ASSERT_EQ(610u, NinetyNinePerc->MinCount); } }; |