summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ProfileData/ProfileSummaryTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/ProfileData/ProfileSummaryTest.cpp')
-rw-r--r--llvm/unittests/ProfileData/ProfileSummaryTest.cpp66
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));
+}
OpenPOWER on IntegriCloud