diff options
author | Vedant Kumar <vsk@apple.com> | 2017-12-07 00:01:15 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-12-07 00:01:15 +0000 |
commit | 337b0db1003578810d0d0cf345293b65e74886b7 (patch) | |
tree | 5cea9cbfe4d107e48a914bb8e61745e6e4b93811 /llvm/unittests/ProfileData | |
parent | 96d22e12a2ef934283286e2ed1e19a0420476be4 (diff) | |
download | bcm5719-llvm-337b0db1003578810d0d0cf345293b65e74886b7.tar.gz bcm5719-llvm-337b0db1003578810d0d0cf345293b65e74886b7.zip |
[Coverage] Scan ahead for the most-recent completed count (PR35495)
This extends r319391. It teaches the segment builder to emit the right
completed segment when more than one region ends at the same location.
Fixes PR35495.
llvm-svn: 319990
Diffstat (limited to 'llvm/unittests/ProfileData')
-rw-r--r-- | llvm/unittests/ProfileData/CoverageMappingTest.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/llvm/unittests/ProfileData/CoverageMappingTest.cpp b/llvm/unittests/ProfileData/CoverageMappingTest.cpp index 26a8e511b4f..4d0f852da98 100644 --- a/llvm/unittests/ProfileData/CoverageMappingTest.cpp +++ b/llvm/unittests/ProfileData/CoverageMappingTest.cpp @@ -470,8 +470,9 @@ TEST_P(CoverageMappingTest, multiple_completed_segments_at_same_loc) { ProfileWriter.addRecord({"func1", 0x1234, {0, 1, 2}}, Err); startFunction("func1", 0x1234); - // PR35437 + // PR35495 addCMR(Counter::getCounter(1), "file1", 2, 1, 18, 2); + addCMR(Counter::getCounter(0), "file1", 8, 10, 14, 6); addCMR(Counter::getCounter(0), "file1", 8, 12, 14, 6); addCMR(Counter::getCounter(1), "file1", 9, 1, 14, 6); addCMR(Counter::getCounter(2), "file1", 11, 13, 11, 14); @@ -482,14 +483,15 @@ TEST_P(CoverageMappingTest, multiple_completed_segments_at_same_loc) { CoverageData Data = LoadedCoverage->getCoverageForFunction(FunctionRecord); std::vector<CoverageSegment> Segments(Data.begin(), Data.end()); - ASSERT_EQ(6U, Segments.size()); + ASSERT_EQ(7U, Segments.size()); EXPECT_EQ(CoverageSegment(2, 1, 1, true), Segments[0]); - EXPECT_EQ(CoverageSegment(8, 12, 0, true), Segments[1]); - EXPECT_EQ(CoverageSegment(9, 1, 1, true), Segments[2]); - EXPECT_EQ(CoverageSegment(11, 13, 2, true), Segments[3]); + EXPECT_EQ(CoverageSegment(8, 10, 0, true), Segments[1]); + EXPECT_EQ(CoverageSegment(8, 12, 0, true), Segments[2]); + EXPECT_EQ(CoverageSegment(9, 1, 1, true), Segments[3]); + EXPECT_EQ(CoverageSegment(11, 13, 2, true), Segments[4]); // Use count=1 (from 9:1 -> 14:6), not count=0 (from 8:12 -> 14:6). - EXPECT_EQ(CoverageSegment(11, 14, 1, false), Segments[4]); - EXPECT_EQ(CoverageSegment(18, 2, false), Segments[5]); + EXPECT_EQ(CoverageSegment(11, 14, 1, false), Segments[5]); + EXPECT_EQ(CoverageSegment(18, 2, false), Segments[6]); } TEST_P(CoverageMappingTest, dont_emit_redundant_segments) { |