diff options
Diffstat (limited to 'llvm/unittests/ProfileData/ProfileSummaryTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/ProfileSummaryTest.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/llvm/unittests/ProfileData/ProfileSummaryTest.cpp b/llvm/unittests/ProfileData/ProfileSummaryTest.cpp new file mode 100644 index 00000000000..46d7162f743 --- /dev/null +++ b/llvm/unittests/ProfileData/ProfileSummaryTest.cpp @@ -0,0 +1,66 @@ +//===- unittest/ProfileData/ProfileSummaryTest.cpp --------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/IR/Module.h" +#include "llvm/ProfileData/InstrProf.h" +#include "llvm/ProfileData/ProfileCommon.h" +#include "llvm/ProfileData/SampleProf.h" +#include "gtest/gtest.h" + +using namespace llvm; +using namespace sampleprof; + +struct ProfileSummaryTest : ::testing::Test { + InstrProfSummary IPS; + SampleProfileSummary SPS; + + ProfileSummaryTest() + : IPS({100000, 900000, 999999}), SPS({100000, 900000, 999999}) {} + void SetUp() { + InstrProfRecord Record1("func1", 0x1234, {97531, 5, 99999}); + InstrProfRecord Record2("func2", 0x1234, {57341, 10000, 10, 1}); + IPS.addRecord(Record1); + IPS.addRecord(Record2); + + IPS.computeDetailedSummary(); + + FunctionSamples FooSamples; + 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); + + FunctionSamples BarSamples; + BarSamples.addTotalSamples(20301); + BarSamples.addHeadSamples(1437); + BarSamples.addBodySamples(1, 0, 1437); + + SPS.addRecord(FooSamples); + SPS.addRecord(BarSamples); + + SPS.computeDetailedSummary(); + } + +}; + +TEST_F(ProfileSummaryTest, summary_from_module) { + LLVMContext Context; + Module M1("M1", Context); + EXPECT_FALSE(ProfileSummary::getProfileSummary(&M1)); + M1.setProfileSummary(IPS.getMD(Context)); + EXPECT_TRUE(IPS == *ProfileSummary::getProfileSummary(&M1)); + + Module M2("M2", Context); + EXPECT_FALSE(ProfileSummary::getProfileSummary(&M2)); + M2.setProfileSummary(SPS.getMD(Context)); + EXPECT_TRUE(SPS == *ProfileSummary::getProfileSummary(&M2)); +} |